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.
27737 27738 27739 27740 27741 27742 27743 27744 27745 27746 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 27737 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.
27735 27736 27737 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 27735 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
27794 27795 27796 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 27794 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
27818 27819 27820 27821 27822 27823 27824 27825 27826 27827 27828 27829 27830 27831 27832 27833 27834 27835 27836 27837 27838 27839 27840 27841 27842 27843 27844 27845 27846 27847 27848 27849 27850 27851 27852 27853 27854 27855 27856 27857 27858 27859 27860 27861 27862 27863 27864 27865 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 27818 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
27790 27791 27792 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 27790 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
27798 27799 27800 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 27798 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
27814 27815 27816 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 27814 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
27802 27803 27804 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 27802 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
27806 27807 27808 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 27806 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
27758 27759 27760 27761 27762 27763 27764 27765 27766 27767 27768 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 27758 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
27784 27785 27786 27787 27788 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 27784 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
27748 27749 27750 27751 27752 27753 27754 27755 27756 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 27748 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
27779 27780 27781 27782 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 27779 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
27770 27771 27772 27773 27774 27775 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 27770 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |