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
Returns a new instance of Request.
29421 29422 29423 29424 29425 29426 29427 29428 29429 29430 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29421 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.
29419 29420 29421 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29419 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
29478 29479 29480 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29478 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
29502 29503 29504 29505 29506 29507 29508 29509 29510 29511 29512 29513 29514 29515 29516 29517 29518 29519 29520 29521 29522 29523 29524 29525 29526 29527 29528 29529 29530 29531 29532 29533 29534 29535 29536 29537 29538 29539 29540 29541 29542 29543 29544 29545 29546 29547 29548 29549 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29502 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
29474 29475 29476 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29474 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
29482 29483 29484 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29482 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
29498 29499 29500 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29498 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
29486 29487 29488 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29486 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
29490 29491 29492 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29490 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
29442 29443 29444 29445 29446 29447 29448 29449 29450 29451 29452 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29442 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
29468 29469 29470 29471 29472 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29468 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
29432 29433 29434 29435 29436 29437 29438 29439 29440 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29432 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
29463 29464 29465 29466 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29463 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
29454 29455 29456 29457 29458 29459 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29454 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |