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.
42599 42600 42601 42602 42603 42604 42605 42606 42607 42608 42609 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 42599 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.
42597 42598 42599 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 42597 def base_uri @base_uri end |
#full_uri ⇒ Object (readonly)
Returns the value of attribute full_uri.
42597 42598 42599 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 42597 def full_uri @full_uri end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
42597 42598 42599 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 42597 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
42657 42658 42659 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 42657 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
42681 42682 42683 42684 42685 42686 42687 42688 42689 42690 42691 42692 42693 42694 42695 42696 42697 42698 42699 42700 42701 42702 42703 42704 42705 42706 42707 42708 42709 42710 42711 42712 42713 42714 42715 42716 42717 42718 42719 42720 42721 42722 42723 42724 42725 42726 42727 42728 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 42681 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
42653 42654 42655 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 42653 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
42661 42662 42663 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 42661 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
42677 42678 42679 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 42677 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
42665 42666 42667 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 42665 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
42669 42670 42671 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 42669 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
42621 42622 42623 42624 42625 42626 42627 42628 42629 42630 42631 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 42621 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
42647 42648 42649 42650 42651 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 42647 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
42611 42612 42613 42614 42615 42616 42617 42618 42619 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 42611 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
42642 42643 42644 42645 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 42642 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
42633 42634 42635 42636 42637 42638 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 42633 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |