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.
24565 24566 24567 24568 24569 24570 24571 24572 24573 24574 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 24565 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.
24563 24564 24565 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 24563 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
24622 24623 24624 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 24622 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
24646 24647 24648 24649 24650 24651 24652 24653 24654 24655 24656 24657 24658 24659 24660 24661 24662 24663 24664 24665 24666 24667 24668 24669 24670 24671 24672 24673 24674 24675 24676 24677 24678 24679 24680 24681 24682 24683 24684 24685 24686 24687 24688 24689 24690 24691 24692 24693 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 24646 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
24618 24619 24620 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 24618 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
24626 24627 24628 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 24626 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
24642 24643 24644 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 24642 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
24630 24631 24632 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 24630 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
24634 24635 24636 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 24634 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
24586 24587 24588 24589 24590 24591 24592 24593 24594 24595 24596 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 24586 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
24612 24613 24614 24615 24616 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 24612 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
24576 24577 24578 24579 24580 24581 24582 24583 24584 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 24576 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
24607 24608 24609 24610 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 24607 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
24598 24599 24600 24601 24602 24603 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 24598 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |