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.
54370 54371 54372 54373 54374 54375 54376 54377 54378 54379 54380 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 54370 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.
54368 54369 54370 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 54368 def base_uri @base_uri end |
#full_uri ⇒ Object (readonly)
Returns the value of attribute full_uri.
54368 54369 54370 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 54368 def full_uri @full_uri end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
54368 54369 54370 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 54368 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
54428 54429 54430 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 54428 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
54452 54453 54454 54455 54456 54457 54458 54459 54460 54461 54462 54463 54464 54465 54466 54467 54468 54469 54470 54471 54472 54473 54474 54475 54476 54477 54478 54479 54480 54481 54482 54483 54484 54485 54486 54487 54488 54489 54490 54491 54492 54493 54494 54495 54496 54497 54498 54499 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 54452 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
54424 54425 54426 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 54424 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
54432 54433 54434 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 54432 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
54448 54449 54450 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 54448 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
54436 54437 54438 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 54436 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
54440 54441 54442 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 54440 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
54392 54393 54394 54395 54396 54397 54398 54399 54400 54401 54402 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 54392 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
54418 54419 54420 54421 54422 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 54418 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
54382 54383 54384 54385 54386 54387 54388 54389 54390 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 54382 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
54413 54414 54415 54416 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 54413 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
54404 54405 54406 54407 54408 54409 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 54404 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |