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.
26511 26512 26513 26514 26515 26516 26517 26518 26519 26520 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26511 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.
26509 26510 26511 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26509 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
26568 26569 26570 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26568 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
26592 26593 26594 26595 26596 26597 26598 26599 26600 26601 26602 26603 26604 26605 26606 26607 26608 26609 26610 26611 26612 26613 26614 26615 26616 26617 26618 26619 26620 26621 26622 26623 26624 26625 26626 26627 26628 26629 26630 26631 26632 26633 26634 26635 26636 26637 26638 26639 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26592 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
26564 26565 26566 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26564 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
26572 26573 26574 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26572 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
26588 26589 26590 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26588 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
26576 26577 26578 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26576 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
26580 26581 26582 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26580 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
26532 26533 26534 26535 26536 26537 26538 26539 26540 26541 26542 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26532 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
26558 26559 26560 26561 26562 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26558 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
26522 26523 26524 26525 26526 26527 26528 26529 26530 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26522 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
26553 26554 26555 26556 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26553 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
26544 26545 26546 26547 26548 26549 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26544 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |