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
28599 28600 28601 28602 28603 28604 28605 28606 28607 28608 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28599 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.
28597 28598 28599 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28597 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
28656 28657 28658 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28656 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
28680 28681 28682 28683 28684 28685 28686 28687 28688 28689 28690 28691 28692 28693 28694 28695 28696 28697 28698 28699 28700 28701 28702 28703 28704 28705 28706 28707 28708 28709 28710 28711 28712 28713 28714 28715 28716 28717 28718 28719 28720 28721 28722 28723 28724 28725 28726 28727 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28680 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
28652 28653 28654 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28652 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
28660 28661 28662 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28660 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
28676 28677 28678 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28676 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
28664 28665 28666 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28664 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
28668 28669 28670 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28668 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
28620 28621 28622 28623 28624 28625 28626 28627 28628 28629 28630 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28620 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
28646 28647 28648 28649 28650 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28646 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
28610 28611 28612 28613 28614 28615 28616 28617 28618 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28610 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
28641 28642 28643 28644 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28641 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
28632 28633 28634 28635 28636 28637 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28632 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |