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.
39483 39484 39485 39486 39487 39488 39489 39490 39491 39492 39493 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39483 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.
39481 39482 39483 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39481 def base_uri @base_uri end |
#full_uri ⇒ Object (readonly)
Returns the value of attribute full_uri.
39481 39482 39483 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39481 def full_uri @full_uri end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
39481 39482 39483 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39481 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
39541 39542 39543 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39541 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
39565 39566 39567 39568 39569 39570 39571 39572 39573 39574 39575 39576 39577 39578 39579 39580 39581 39582 39583 39584 39585 39586 39587 39588 39589 39590 39591 39592 39593 39594 39595 39596 39597 39598 39599 39600 39601 39602 39603 39604 39605 39606 39607 39608 39609 39610 39611 39612 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39565 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
39537 39538 39539 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39537 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
39545 39546 39547 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39545 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
39561 39562 39563 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39561 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
39549 39550 39551 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39549 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
39553 39554 39555 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39553 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
39505 39506 39507 39508 39509 39510 39511 39512 39513 39514 39515 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39505 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
39531 39532 39533 39534 39535 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39531 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
39495 39496 39497 39498 39499 39500 39501 39502 39503 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39495 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
39526 39527 39528 39529 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39526 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
39517 39518 39519 39520 39521 39522 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 39517 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |