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.
45702 45703 45704 45705 45706 45707 45708 45709 45710 45711 45712 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45702 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.
45700 45701 45702 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45700 def base_uri @base_uri end |
#full_uri ⇒ Object (readonly)
Returns the value of attribute full_uri.
45700 45701 45702 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45700 def full_uri @full_uri end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
45700 45701 45702 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45700 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
45760 45761 45762 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45760 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
45784 45785 45786 45787 45788 45789 45790 45791 45792 45793 45794 45795 45796 45797 45798 45799 45800 45801 45802 45803 45804 45805 45806 45807 45808 45809 45810 45811 45812 45813 45814 45815 45816 45817 45818 45819 45820 45821 45822 45823 45824 45825 45826 45827 45828 45829 45830 45831 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45784 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) # DEBUG curl = ['curl'] # DEBUG if klass != Net::HTTP::Get # DEBUG curl << "-X%s" % klass.name.split("::").last.upcase # DEBUGend if @body # DEBUG tmpfile = "/tmp/rest_client.tmp" # DEBUG File.open(tmpfile, "w") { |os| os << @body.to_s } # DEBUG curl << "-d@%s" % tmpfile request.body = @body end if @auth # DEBUG 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| # DEBUG curl << "-H \"%s: %s\"" % [key, value] request.add_field(key, value) } # DEBUG 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
45756 45757 45758 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45756 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
45764 45765 45766 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45764 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
45780 45781 45782 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45780 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
45768 45769 45770 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45768 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
45772 45773 45774 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45772 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
45724 45725 45726 45727 45728 45729 45730 45731 45732 45733 45734 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45724 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
45750 45751 45752 45753 45754 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45750 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
45714 45715 45716 45717 45718 45719 45720 45721 45722 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45714 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
45745 45746 45747 45748 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45745 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
45736 45737 45738 45739 45740 45741 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 45736 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |