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.
26752 26753 26754 26755 26756 26757 26758 26759 26760 26761 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26752 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.
26750 26751 26752 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26750 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
26809 26810 26811 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26809 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
26833 26834 26835 26836 26837 26838 26839 26840 26841 26842 26843 26844 26845 26846 26847 26848 26849 26850 26851 26852 26853 26854 26855 26856 26857 26858 26859 26860 26861 26862 26863 26864 26865 26866 26867 26868 26869 26870 26871 26872 26873 26874 26875 26876 26877 26878 26879 26880 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26833 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
26805 26806 26807 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26805 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
26813 26814 26815 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26813 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
26829 26830 26831 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26829 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
26817 26818 26819 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26817 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
26821 26822 26823 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26821 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
26773 26774 26775 26776 26777 26778 26779 26780 26781 26782 26783 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26773 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
26799 26800 26801 26802 26803 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26799 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
26763 26764 26765 26766 26767 26768 26769 26770 26771 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26763 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
26794 26795 26796 26797 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26794 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
26785 26786 26787 26788 26789 26790 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26785 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |