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.
29444 29445 29446 29447 29448 29449 29450 29451 29452 29453 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29444 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.
29442 29443 29444 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29442 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
29501 29502 29503 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29501 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
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 29550 29551 29552 29553 29554 29555 29556 29557 29558 29559 29560 29561 29562 29563 29564 29565 29566 29567 29568 29569 29570 29571 29572 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29525 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
29497 29498 29499 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29497 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
29505 29506 29507 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29505 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
29521 29522 29523 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29521 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
29509 29510 29511 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29509 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
29513 29514 29515 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29513 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
29465 29466 29467 29468 29469 29470 29471 29472 29473 29474 29475 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29465 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
29491 29492 29493 29494 29495 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29491 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
29455 29456 29457 29458 29459 29460 29461 29462 29463 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29455 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
29486 29487 29488 29489 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29486 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
29477 29478 29479 29480 29481 29482 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29477 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |