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
28325 28326 28327 28328 28329 28330 28331 28332 28333 28334 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28325 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.
28323 28324 28325 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28323 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
28382 28383 28384 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28382 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
28406 28407 28408 28409 28410 28411 28412 28413 28414 28415 28416 28417 28418 28419 28420 28421 28422 28423 28424 28425 28426 28427 28428 28429 28430 28431 28432 28433 28434 28435 28436 28437 28438 28439 28440 28441 28442 28443 28444 28445 28446 28447 28448 28449 28450 28451 28452 28453 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28406 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
28378 28379 28380 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28378 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
28386 28387 28388 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28386 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
28402 28403 28404 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28402 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
28390 28391 28392 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28390 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
28394 28395 28396 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28394 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
28346 28347 28348 28349 28350 28351 28352 28353 28354 28355 28356 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28346 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
28372 28373 28374 28375 28376 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28372 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
28336 28337 28338 28339 28340 28341 28342 28343 28344 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28336 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
28367 28368 28369 28370 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28367 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
28358 28359 28360 28361 28362 28363 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28358 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |