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
-
#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
28271 28272 28273 28274 28275 28276 28277 28278 28279 28280 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28271 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) @params = nil @body = nil @auth = nil @headers = {} @header_keys_lower_case = [] end |
Instance Attribute Details
#path ⇒ Object (readonly)
Returns the value of attribute path.
28269 28270 28271 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28269 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
28328 28329 28330 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28328 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
28352 28353 28354 28355 28356 28357 28358 28359 28360 28361 28362 28363 28364 28365 28366 28367 28368 28369 28370 28371 28372 28373 28374 28375 28376 28377 28378 28379 28380 28381 28382 28383 28384 28385 28386 28387 28388 28389 28390 28391 28392 28393 28394 28395 28396 28397 28398 28399 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28352 def do_request(klass) Preconditions.assert_class('klass', klass, Class) uri = path.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
28324 28325 28326 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28324 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
28332 28333 28334 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28332 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
28348 28349 28350 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28348 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
28336 28337 28338 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28336 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
28340 28341 28342 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28340 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
28292 28293 28294 28295 28296 28297 28298 28299 28300 28301 28302 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28292 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
28318 28319 28320 28321 28322 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28318 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
28282 28283 28284 28285 28286 28287 28288 28289 28290 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28282 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
28313 28314 28315 28316 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28313 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
28304 28305 28306 28307 28308 28309 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28304 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |