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
-
#base_uri ⇒ Object
readonly
Returns the value of attribute base_uri.
-
#full_uri ⇒ Object
readonly
Returns the value of attribute full_uri.
-
#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.
41441 41442 41443 41444 41445 41446 41447 41448 41449 41450 41451 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41441 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) @full_uri = @base_uri.to_s + @path @params = nil @body = nil @auth = nil @headers = {} @header_keys_lower_case = [] end |
Instance Attribute Details
#base_uri ⇒ Object (readonly)
Returns the value of attribute base_uri.
41439 41440 41441 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41439 def base_uri @base_uri end |
#full_uri ⇒ Object (readonly)
Returns the value of attribute full_uri.
41439 41440 41441 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41439 def full_uri @full_uri end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
41439 41440 41441 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41439 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
41499 41500 41501 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41499 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
41523 41524 41525 41526 41527 41528 41529 41530 41531 41532 41533 41534 41535 41536 41537 41538 41539 41540 41541 41542 41543 41544 41545 41546 41547 41548 41549 41550 41551 41552 41553 41554 41555 41556 41557 41558 41559 41560 41561 41562 41563 41564 41565 41566 41567 41568 41569 41570 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41523 def do_request(klass) Preconditions.assert_class('klass', klass, Class) uri = @full_uri.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
41495 41496 41497 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41495 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
41503 41504 41505 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41503 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
41519 41520 41521 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41519 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
41507 41508 41509 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41507 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
41511 41512 41513 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41511 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
41463 41464 41465 41466 41467 41468 41469 41470 41471 41472 41473 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41463 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
41489 41490 41491 41492 41493 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41489 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
41453 41454 41455 41456 41457 41458 41459 41460 41461 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41453 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
41484 41485 41486 41487 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41484 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
41475 41476 41477 41478 41479 41480 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41475 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |