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.
28681 28682 28683 28684 28685 28686 28687 28688 28689 28690 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28681 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.
28679 28680 28681 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28679 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
28738 28739 28740 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28738 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
28762 28763 28764 28765 28766 28767 28768 28769 28770 28771 28772 28773 28774 28775 28776 28777 28778 28779 28780 28781 28782 28783 28784 28785 28786 28787 28788 28789 28790 28791 28792 28793 28794 28795 28796 28797 28798 28799 28800 28801 28802 28803 28804 28805 28806 28807 28808 28809 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28762 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
28734 28735 28736 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28734 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
28742 28743 28744 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28742 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
28758 28759 28760 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28758 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
28746 28747 28748 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28746 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
28750 28751 28752 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28750 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
28702 28703 28704 28705 28706 28707 28708 28709 28710 28711 28712 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28702 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
28728 28729 28730 28731 28732 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28728 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
28692 28693 28694 28695 28696 28697 28698 28699 28700 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28692 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
28723 28724 28725 28726 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28723 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
28714 28715 28716 28717 28718 28719 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28714 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |