Class: Io::Flow::V0::HttpClient::Request
- Inherits:
-
Object
- Object
- Io::Flow::V0::HttpClient::Request
- Defined in:
- lib/flow_commerce/flow_api_v0_client.rb
Defined Under Namespace
Classes: PATCH
Instance Attribute Summary collapse
-
#path ⇒ Object
readonly
Returns the value of attribute path.
Instance Method Summary collapse
- #delete(&block) ⇒ Object
- #do_request(klass) ⇒ Object
- #get(&block) ⇒ Object
-
#initialize(http_handler, base_uri, path) ⇒ Request
constructor
A new instance of Request.
- #options(&block) ⇒ Object
- #patch(&block) ⇒ Object
- #post(&block) ⇒ Object
- #put(&block) ⇒ Object
- #with_auth(auth) ⇒ Object
- #with_body(body) ⇒ Object
- #with_header(name, value) ⇒ Object
-
#with_json(json) ⇒ Object
Wrapper to set Content-Type header to application/json and set the provided json document as the body.
- #with_query(params) ⇒ Object
Constructor Details
#initialize(http_handler, base_uri, path) ⇒ Request
Returns a new instance of Request.
29395 29396 29397 29398 29399 29400 29401 29402 29403 29404 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29395 def initialize(http_handler, base_uri, path) @http_handler = http_handler @base_uri = Preconditions.assert_class('base_uri', base_uri, URI) @path = Preconditions.assert_class('path', path, String) @params = nil @body = nil @auth = nil @headers = {} @header_keys_lower_case = [] end |
Instance Attribute Details
#path ⇒ Object (readonly)
Returns the value of attribute path.
29393 29394 29395 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29393 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
29452 29453 29454 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29452 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
29476 29477 29478 29479 29480 29481 29482 29483 29484 29485 29486 29487 29488 29489 29490 29491 29492 29493 29494 29495 29496 29497 29498 29499 29500 29501 29502 29503 29504 29505 29506 29507 29508 29509 29510 29511 29512 29513 29514 29515 29516 29517 29518 29519 29520 29521 29522 29523 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29476 def do_request(klass) Preconditions.assert_class('klass', klass, Class) uri = path.dup if q = to_query(@params) uri += "?%s" % q end request = klass.send(:new, uri) curl = ['curl'] if klass != Net::HTTP::Get curl << "-X%s" % klass.name.split("::").last.upcase end if @body # DEBUG path = "/tmp/rest_client.tmp" # DEBUG File.open(path, "w") { |os| os << @body.to_s } # DEBUG curl << "-d@%s" % path request.body = @body end if @auth curl << "-u \"%s:%s\"" % [@auth.username, @auth.password] Preconditions.check_state(!@header_keys_lower_case.include?("authorization"), "Cannot specify both an Authorization header and an auth instance") user_pass = "%s:%s" % [@auth.username, @auth.password] encoded = Base64.encode64(user_pass).to_s.split("\n").map(&:strip).join request.add_field("Authorization", "Basic %s" % encoded) end @headers.each { |key, value| curl << "-H \"%s: %s\"" % [key, value] request.add_field(key, value) } curl << "'%s%s'" % [@base_uri, path] # DEBUG puts curl.join(" ") raw_response = @http_handler.instance(@base_uri, request.path).execute(request) response = raw_response.to_s == "" ? nil : JSON.parse(raw_response) if block_given? yield response else response end end |
#get(&block) ⇒ Object
29448 29449 29450 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29448 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
29456 29457 29458 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29456 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
29472 29473 29474 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29472 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
29460 29461 29462 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29460 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
29464 29465 29466 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29464 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
29416 29417 29418 29419 29420 29421 29422 29423 29424 29425 29426 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29416 def with_auth(auth) Preconditions.assert_class('auth', auth, HttpClient::Authorization) Preconditions.check_state(@auth.nil?, "auth previously set") if auth.scheme.name == AuthScheme::BASIC.name @auth = auth else raise "Auth Scheme[#{auth.scheme.name}] not supported" end self end |
#with_body(body) ⇒ Object
29442 29443 29444 29445 29446 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29442 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
29406 29407 29408 29409 29410 29411 29412 29413 29414 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29406 def with_header(name, value) Preconditions.check_not_blank('name', name, "Header name is required") Preconditions.check_not_blank('value', value, "Header value is required") Preconditions.check_state(!@headers.has_key?(name), "Duplicate header named[%s]" % name) @headers[name] = value @header_keys_lower_case << name.downcase self end |
#with_json(json) ⇒ Object
Wrapper to set Content-Type header to application/json and set the provided json document as the body
29437 29438 29439 29440 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29437 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
29428 29429 29430 29431 29432 29433 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29428 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |