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.
55141 55142 55143 55144 55145 55146 55147 55148 55149 55150 55151 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55141 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.
55139 55140 55141 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55139 def base_uri @base_uri end |
#full_uri ⇒ Object (readonly)
Returns the value of attribute full_uri.
55139 55140 55141 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55139 def full_uri @full_uri end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
55139 55140 55141 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55139 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
55199 55200 55201 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55199 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
55223 55224 55225 55226 55227 55228 55229 55230 55231 55232 55233 55234 55235 55236 55237 55238 55239 55240 55241 55242 55243 55244 55245 55246 55247 55248 55249 55250 55251 55252 55253 55254 55255 55256 55257 55258 55259 55260 55261 55262 55263 55264 55265 55266 55267 55268 55269 55270 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55223 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 # DEBUG end 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
55195 55196 55197 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55195 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
55203 55204 55205 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55203 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
55219 55220 55221 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55219 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
55207 55208 55209 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55207 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
55211 55212 55213 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55211 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
55163 55164 55165 55166 55167 55168 55169 55170 55171 55172 55173 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55163 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
55189 55190 55191 55192 55193 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55189 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
55153 55154 55155 55156 55157 55158 55159 55160 55161 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55153 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
55184 55185 55186 55187 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55184 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
55175 55176 55177 55178 55179 55180 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55175 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |