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.
41035 41036 41037 41038 41039 41040 41041 41042 41043 41044 41045 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41035 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.
41033 41034 41035 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41033 def base_uri @base_uri end |
#full_uri ⇒ Object (readonly)
Returns the value of attribute full_uri.
41033 41034 41035 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41033 def full_uri @full_uri end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
41033 41034 41035 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41033 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
41093 41094 41095 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41093 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
41117 41118 41119 41120 41121 41122 41123 41124 41125 41126 41127 41128 41129 41130 41131 41132 41133 41134 41135 41136 41137 41138 41139 41140 41141 41142 41143 41144 41145 41146 41147 41148 41149 41150 41151 41152 41153 41154 41155 41156 41157 41158 41159 41160 41161 41162 41163 41164 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41117 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
41089 41090 41091 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41089 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
41097 41098 41099 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41097 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
41113 41114 41115 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41113 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
41101 41102 41103 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41101 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
41105 41106 41107 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41105 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
41057 41058 41059 41060 41061 41062 41063 41064 41065 41066 41067 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41057 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
41083 41084 41085 41086 41087 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41083 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
41047 41048 41049 41050 41051 41052 41053 41054 41055 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41047 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
41078 41079 41080 41081 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41078 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
41069 41070 41071 41072 41073 41074 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41069 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |