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.
33833 33834 33835 33836 33837 33838 33839 33840 33841 33842 33843 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 33833 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.
33831 33832 33833 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 33831 def base_uri @base_uri end |
#full_uri ⇒ Object (readonly)
Returns the value of attribute full_uri.
33831 33832 33833 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 33831 def full_uri @full_uri end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
33831 33832 33833 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 33831 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
33891 33892 33893 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 33891 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
33915 33916 33917 33918 33919 33920 33921 33922 33923 33924 33925 33926 33927 33928 33929 33930 33931 33932 33933 33934 33935 33936 33937 33938 33939 33940 33941 33942 33943 33944 33945 33946 33947 33948 33949 33950 33951 33952 33953 33954 33955 33956 33957 33958 33959 33960 33961 33962 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 33915 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
33887 33888 33889 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 33887 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
33895 33896 33897 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 33895 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
33911 33912 33913 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 33911 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
33899 33900 33901 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 33899 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
33903 33904 33905 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 33903 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
33855 33856 33857 33858 33859 33860 33861 33862 33863 33864 33865 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 33855 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
33881 33882 33883 33884 33885 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 33881 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
33845 33846 33847 33848 33849 33850 33851 33852 33853 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 33845 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
33876 33877 33878 33879 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 33876 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
33867 33868 33869 33870 33871 33872 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 33867 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |