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
Returns a new instance of Request.
29401 29402 29403 29404 29405 29406 29407 29408 29409 29410 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29401 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.
29399 29400 29401 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29399 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
29458 29459 29460 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29458 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
29482 29483 29484 29485 29486 29487 29488 29489 29490 29491 29492 29493 29494 29495 29496 29497 29498 29499 29500 29501 29502 29503 29504 29505 29506 29507 29508 29509 29510 29511 29512 29513 29514 29515 29516 29517 29518 29519 29520 29521 29522 29523 29524 29525 29526 29527 29528 29529 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29482 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
29454 29455 29456 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29454 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
29462 29463 29464 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29462 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
29478 29479 29480 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29478 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
29466 29467 29468 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29466 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
29470 29471 29472 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29470 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
29422 29423 29424 29425 29426 29427 29428 29429 29430 29431 29432 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29422 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
29448 29449 29450 29451 29452 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29448 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
29412 29413 29414 29415 29416 29417 29418 29419 29420 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29412 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
29443 29444 29445 29446 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29443 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
29434 29435 29436 29437 29438 29439 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 29434 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |