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.
29775 29776 29777 29778 29779 29780 29781 29782 29783 29784 29785 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29775 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.
29773 29774 29775 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29773 def base_uri @base_uri end |
#full_uri ⇒ Object (readonly)
Returns the value of attribute full_uri.
29773 29774 29775 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29773 def full_uri @full_uri end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
29773 29774 29775 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29773 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
29833 29834 29835 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29833 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
29857 29858 29859 29860 29861 29862 29863 29864 29865 29866 29867 29868 29869 29870 29871 29872 29873 29874 29875 29876 29877 29878 29879 29880 29881 29882 29883 29884 29885 29886 29887 29888 29889 29890 29891 29892 29893 29894 29895 29896 29897 29898 29899 29900 29901 29902 29903 29904 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29857 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) 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
29829 29830 29831 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29829 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
29837 29838 29839 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29837 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
29853 29854 29855 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29853 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
29841 29842 29843 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29841 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
29845 29846 29847 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29845 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
29797 29798 29799 29800 29801 29802 29803 29804 29805 29806 29807 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29797 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
29823 29824 29825 29826 29827 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29823 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
29787 29788 29789 29790 29791 29792 29793 29794 29795 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29787 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
29818 29819 29820 29821 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29818 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
29809 29810 29811 29812 29813 29814 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29809 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |