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.
64625 64626 64627 64628 64629 64630 64631 64632 64633 64634 64635 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 64625 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.
64623 64624 64625 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 64623 def base_uri @base_uri end |
#full_uri ⇒ Object (readonly)
Returns the value of attribute full_uri.
64623 64624 64625 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 64623 def full_uri @full_uri end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
64623 64624 64625 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 64623 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
64683 64684 64685 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 64683 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
64707 64708 64709 64710 64711 64712 64713 64714 64715 64716 64717 64718 64719 64720 64721 64722 64723 64724 64725 64726 64727 64728 64729 64730 64731 64732 64733 64734 64735 64736 64737 64738 64739 64740 64741 64742 64743 64744 64745 64746 64747 64748 64749 64750 64751 64752 64753 64754 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 64707 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
64679 64680 64681 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 64679 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
64687 64688 64689 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 64687 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
64703 64704 64705 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 64703 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
64691 64692 64693 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 64691 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
64695 64696 64697 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 64695 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
64647 64648 64649 64650 64651 64652 64653 64654 64655 64656 64657 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 64647 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
64673 64674 64675 64676 64677 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 64673 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
64637 64638 64639 64640 64641 64642 64643 64644 64645 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 64637 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
64668 64669 64670 64671 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 64668 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
64659 64660 64661 64662 64663 64664 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 64659 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |