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.
43411 43412 43413 43414 43415 43416 43417 43418 43419 43420 43421 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 43411 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.
43409 43410 43411 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 43409 def base_uri @base_uri end |
#full_uri ⇒ Object (readonly)
Returns the value of attribute full_uri.
43409 43410 43411 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 43409 def full_uri @full_uri end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
43409 43410 43411 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 43409 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
43469 43470 43471 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 43469 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
43493 43494 43495 43496 43497 43498 43499 43500 43501 43502 43503 43504 43505 43506 43507 43508 43509 43510 43511 43512 43513 43514 43515 43516 43517 43518 43519 43520 43521 43522 43523 43524 43525 43526 43527 43528 43529 43530 43531 43532 43533 43534 43535 43536 43537 43538 43539 43540 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 43493 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
43465 43466 43467 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 43465 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
43473 43474 43475 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 43473 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
43489 43490 43491 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 43489 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
43477 43478 43479 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 43477 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
43481 43482 43483 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 43481 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
43433 43434 43435 43436 43437 43438 43439 43440 43441 43442 43443 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 43433 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
43459 43460 43461 43462 43463 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 43459 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
43423 43424 43425 43426 43427 43428 43429 43430 43431 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 43423 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
43454 43455 43456 43457 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 43454 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
43445 43446 43447 43448 43449 43450 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 43445 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |