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.
56804 56805 56806 56807 56808 56809 56810 56811 56812 56813 56814 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 56804 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.
56802 56803 56804 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 56802 def base_uri @base_uri end |
#full_uri ⇒ Object (readonly)
Returns the value of attribute full_uri.
56802 56803 56804 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 56802 def full_uri @full_uri end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
56802 56803 56804 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 56802 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
56862 56863 56864 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 56862 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
56886 56887 56888 56889 56890 56891 56892 56893 56894 56895 56896 56897 56898 56899 56900 56901 56902 56903 56904 56905 56906 56907 56908 56909 56910 56911 56912 56913 56914 56915 56916 56917 56918 56919 56920 56921 56922 56923 56924 56925 56926 56927 56928 56929 56930 56931 56932 56933 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 56886 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
56858 56859 56860 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 56858 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
56866 56867 56868 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 56866 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
56882 56883 56884 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 56882 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
56870 56871 56872 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 56870 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
56874 56875 56876 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 56874 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
56826 56827 56828 56829 56830 56831 56832 56833 56834 56835 56836 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 56826 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
56852 56853 56854 56855 56856 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 56852 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
56816 56817 56818 56819 56820 56821 56822 56823 56824 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 56816 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
56847 56848 56849 56850 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 56847 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
56838 56839 56840 56841 56842 56843 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 56838 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |