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.
55996 55997 55998 55999 56000 56001 56002 56003 56004 56005 56006 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55996 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.
55994 55995 55996 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55994 def base_uri @base_uri end |
#full_uri ⇒ Object (readonly)
Returns the value of attribute full_uri.
55994 55995 55996 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55994 def full_uri @full_uri end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
55994 55995 55996 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55994 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
56054 56055 56056 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 56054 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
56078 56079 56080 56081 56082 56083 56084 56085 56086 56087 56088 56089 56090 56091 56092 56093 56094 56095 56096 56097 56098 56099 56100 56101 56102 56103 56104 56105 56106 56107 56108 56109 56110 56111 56112 56113 56114 56115 56116 56117 56118 56119 56120 56121 56122 56123 56124 56125 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 56078 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
56050 56051 56052 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 56050 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
56058 56059 56060 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 56058 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
56074 56075 56076 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 56074 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
56062 56063 56064 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 56062 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
56066 56067 56068 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 56066 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
56018 56019 56020 56021 56022 56023 56024 56025 56026 56027 56028 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 56018 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
56044 56045 56046 56047 56048 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 56044 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
56008 56009 56010 56011 56012 56013 56014 56015 56016 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 56008 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
56039 56040 56041 56042 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 56039 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
56030 56031 56032 56033 56034 56035 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 56030 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |