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.
42296 42297 42298 42299 42300 42301 42302 42303 42304 42305 42306 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 42296 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.
42294 42295 42296 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 42294 def base_uri @base_uri end |
#full_uri ⇒ Object (readonly)
Returns the value of attribute full_uri.
42294 42295 42296 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 42294 def full_uri @full_uri end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
42294 42295 42296 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 42294 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
42354 42355 42356 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 42354 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
42378 42379 42380 42381 42382 42383 42384 42385 42386 42387 42388 42389 42390 42391 42392 42393 42394 42395 42396 42397 42398 42399 42400 42401 42402 42403 42404 42405 42406 42407 42408 42409 42410 42411 42412 42413 42414 42415 42416 42417 42418 42419 42420 42421 42422 42423 42424 42425 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 42378 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
42350 42351 42352 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 42350 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
42358 42359 42360 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 42358 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
42374 42375 42376 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 42374 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
42362 42363 42364 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 42362 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
42366 42367 42368 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 42366 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
42318 42319 42320 42321 42322 42323 42324 42325 42326 42327 42328 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 42318 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
42344 42345 42346 42347 42348 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 42344 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
42308 42309 42310 42311 42312 42313 42314 42315 42316 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 42308 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
42339 42340 42341 42342 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 42339 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
42330 42331 42332 42333 42334 42335 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 42330 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |