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.
73137 73138 73139 73140 73141 73142 73143 73144 73145 73146 73147 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 73137 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.
73135 73136 73137 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 73135 def base_uri @base_uri end |
#full_uri ⇒ Object (readonly)
Returns the value of attribute full_uri.
73135 73136 73137 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 73135 def full_uri @full_uri end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
73135 73136 73137 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 73135 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
73195 73196 73197 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 73195 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
73219 73220 73221 73222 73223 73224 73225 73226 73227 73228 73229 73230 73231 73232 73233 73234 73235 73236 73237 73238 73239 73240 73241 73242 73243 73244 73245 73246 73247 73248 73249 73250 73251 73252 73253 73254 73255 73256 73257 73258 73259 73260 73261 73262 73263 73264 73265 73266 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 73219 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
73191 73192 73193 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 73191 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
73199 73200 73201 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 73199 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
73215 73216 73217 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 73215 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
73203 73204 73205 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 73203 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
73207 73208 73209 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 73207 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
73159 73160 73161 73162 73163 73164 73165 73166 73167 73168 73169 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 73159 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
73185 73186 73187 73188 73189 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 73185 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
73149 73150 73151 73152 73153 73154 73155 73156 73157 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 73149 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
73180 73181 73182 73183 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 73180 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
73171 73172 73173 73174 73175 73176 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 73171 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |