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.
54266 54267 54268 54269 54270 54271 54272 54273 54274 54275 54276 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 54266 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.
54264 54265 54266 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 54264 def base_uri @base_uri end |
#full_uri ⇒ Object (readonly)
Returns the value of attribute full_uri.
54264 54265 54266 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 54264 def full_uri @full_uri end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
54264 54265 54266 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 54264 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
54324 54325 54326 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 54324 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
54348 54349 54350 54351 54352 54353 54354 54355 54356 54357 54358 54359 54360 54361 54362 54363 54364 54365 54366 54367 54368 54369 54370 54371 54372 54373 54374 54375 54376 54377 54378 54379 54380 54381 54382 54383 54384 54385 54386 54387 54388 54389 54390 54391 54392 54393 54394 54395 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 54348 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
54320 54321 54322 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 54320 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
54328 54329 54330 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 54328 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
54344 54345 54346 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 54344 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
54332 54333 54334 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 54332 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
54336 54337 54338 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 54336 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
54288 54289 54290 54291 54292 54293 54294 54295 54296 54297 54298 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 54288 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
54314 54315 54316 54317 54318 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 54314 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
54278 54279 54280 54281 54282 54283 54284 54285 54286 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 54278 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
54309 54310 54311 54312 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 54309 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
54300 54301 54302 54303 54304 54305 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 54300 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |