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.
53046 53047 53048 53049 53050 53051 53052 53053 53054 53055 53056 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 53046 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.
53044 53045 53046 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 53044 def base_uri @base_uri end |
#full_uri ⇒ Object (readonly)
Returns the value of attribute full_uri.
53044 53045 53046 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 53044 def full_uri @full_uri end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
53044 53045 53046 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 53044 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
53104 53105 53106 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 53104 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
53128 53129 53130 53131 53132 53133 53134 53135 53136 53137 53138 53139 53140 53141 53142 53143 53144 53145 53146 53147 53148 53149 53150 53151 53152 53153 53154 53155 53156 53157 53158 53159 53160 53161 53162 53163 53164 53165 53166 53167 53168 53169 53170 53171 53172 53173 53174 53175 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 53128 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
53100 53101 53102 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 53100 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
53108 53109 53110 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 53108 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
53124 53125 53126 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 53124 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
53112 53113 53114 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 53112 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
53116 53117 53118 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 53116 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
53068 53069 53070 53071 53072 53073 53074 53075 53076 53077 53078 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 53068 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
53094 53095 53096 53097 53098 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 53094 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
53058 53059 53060 53061 53062 53063 53064 53065 53066 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 53058 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
53089 53090 53091 53092 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 53089 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
53080 53081 53082 53083 53084 53085 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 53080 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |