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.
25050 25051 25052 25053 25054 25055 25056 25057 25058 25059 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 25050 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.
25048 25049 25050 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 25048 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
25107 25108 25109 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 25107 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
25131 25132 25133 25134 25135 25136 25137 25138 25139 25140 25141 25142 25143 25144 25145 25146 25147 25148 25149 25150 25151 25152 25153 25154 25155 25156 25157 25158 25159 25160 25161 25162 25163 25164 25165 25166 25167 25168 25169 25170 25171 25172 25173 25174 25175 25176 25177 25178 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 25131 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
25103 25104 25105 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 25103 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
25111 25112 25113 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 25111 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
25127 25128 25129 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 25127 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
25115 25116 25117 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 25115 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
25119 25120 25121 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 25119 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
25071 25072 25073 25074 25075 25076 25077 25078 25079 25080 25081 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 25071 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
25097 25098 25099 25100 25101 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 25097 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
25061 25062 25063 25064 25065 25066 25067 25068 25069 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 25061 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
25092 25093 25094 25095 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 25092 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
25083 25084 25085 25086 25087 25088 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 25083 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |