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.
55294 55295 55296 55297 55298 55299 55300 55301 55302 55303 55304 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55294 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.
55292 55293 55294 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55292 def base_uri @base_uri end |
#full_uri ⇒ Object (readonly)
Returns the value of attribute full_uri.
55292 55293 55294 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55292 def full_uri @full_uri end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
55292 55293 55294 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55292 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
55352 55353 55354 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55352 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
55376 55377 55378 55379 55380 55381 55382 55383 55384 55385 55386 55387 55388 55389 55390 55391 55392 55393 55394 55395 55396 55397 55398 55399 55400 55401 55402 55403 55404 55405 55406 55407 55408 55409 55410 55411 55412 55413 55414 55415 55416 55417 55418 55419 55420 55421 55422 55423 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55376 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
55348 55349 55350 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55348 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
55356 55357 55358 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55356 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
55372 55373 55374 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55372 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
55360 55361 55362 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55360 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
55364 55365 55366 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55364 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
55316 55317 55318 55319 55320 55321 55322 55323 55324 55325 55326 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55316 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
55342 55343 55344 55345 55346 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55342 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
55306 55307 55308 55309 55310 55311 55312 55313 55314 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55306 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
55337 55338 55339 55340 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55337 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
55328 55329 55330 55331 55332 55333 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55328 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |