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.
52635 52636 52637 52638 52639 52640 52641 52642 52643 52644 52645 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 52635 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.
52633 52634 52635 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 52633 def base_uri @base_uri end |
#full_uri ⇒ Object (readonly)
Returns the value of attribute full_uri.
52633 52634 52635 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 52633 def full_uri @full_uri end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
52633 52634 52635 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 52633 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
52693 52694 52695 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 52693 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
52717 52718 52719 52720 52721 52722 52723 52724 52725 52726 52727 52728 52729 52730 52731 52732 52733 52734 52735 52736 52737 52738 52739 52740 52741 52742 52743 52744 52745 52746 52747 52748 52749 52750 52751 52752 52753 52754 52755 52756 52757 52758 52759 52760 52761 52762 52763 52764 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 52717 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) # DEBUG curl = ['curl'] # DEBUG if klass != Net::HTTP::Get # DEBUG curl << "-X%s" % klass.name.split("::").last.upcase # DEBUG end if @body # DEBUG tmpfile = "/tmp/rest_client.tmp" # DEBUG File.open(tmpfile, "w") { |os| os << @body.to_s } # DEBUG curl << "-d@%s" % tmpfile request.body = @body end if @auth # DEBUG 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| # DEBUG curl << "-H \"%s: %s\"" % [key, value] request.add_field(key, value) } # DEBUG 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
52689 52690 52691 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 52689 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
52697 52698 52699 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 52697 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
52713 52714 52715 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 52713 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
52701 52702 52703 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 52701 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
52705 52706 52707 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 52705 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
52657 52658 52659 52660 52661 52662 52663 52664 52665 52666 52667 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 52657 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
52683 52684 52685 52686 52687 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 52683 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
52647 52648 52649 52650 52651 52652 52653 52654 52655 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 52647 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
52678 52679 52680 52681 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 52678 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
52669 52670 52671 52672 52673 52674 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 52669 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |