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
24485 24486 24487 24488 24489 24490 24491 24492 24493 24494 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 24485 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.
24483 24484 24485 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 24483 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
24542 24543 24544 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 24542 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
24566 24567 24568 24569 24570 24571 24572 24573 24574 24575 24576 24577 24578 24579 24580 24581 24582 24583 24584 24585 24586 24587 24588 24589 24590 24591 24592 24593 24594 24595 24596 24597 24598 24599 24600 24601 24602 24603 24604 24605 24606 24607 24608 24609 24610 24611 24612 24613 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 24566 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
24538 24539 24540 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 24538 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
24546 24547 24548 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 24546 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
24562 24563 24564 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 24562 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
24550 24551 24552 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 24550 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
24554 24555 24556 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 24554 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
24506 24507 24508 24509 24510 24511 24512 24513 24514 24515 24516 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 24506 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
24532 24533 24534 24535 24536 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 24532 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
24496 24497 24498 24499 24500 24501 24502 24503 24504 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 24496 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
24527 24528 24529 24530 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 24527 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
24518 24519 24520 24521 24522 24523 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 24518 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |