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.
29691 29692 29693 29694 29695 29696 29697 29698 29699 29700 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29691 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.
29689 29690 29691 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29689 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
29748 29749 29750 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29748 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
29772 29773 29774 29775 29776 29777 29778 29779 29780 29781 29782 29783 29784 29785 29786 29787 29788 29789 29790 29791 29792 29793 29794 29795 29796 29797 29798 29799 29800 29801 29802 29803 29804 29805 29806 29807 29808 29809 29810 29811 29812 29813 29814 29815 29816 29817 29818 29819 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29772 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
29744 29745 29746 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29744 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
29752 29753 29754 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29752 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
29768 29769 29770 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29768 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
29756 29757 29758 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29756 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
29760 29761 29762 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29760 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
29712 29713 29714 29715 29716 29717 29718 29719 29720 29721 29722 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29712 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
29738 29739 29740 29741 29742 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29738 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
29702 29703 29704 29705 29706 29707 29708 29709 29710 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29702 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
29733 29734 29735 29736 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29733 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
29724 29725 29726 29727 29728 29729 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29724 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |