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.
23178 23179 23180 23181 23182 23183 23184 23185 23186 23187 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 23178 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.
23176 23177 23178 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 23176 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
23235 23236 23237 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 23235 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
23259 23260 23261 23262 23263 23264 23265 23266 23267 23268 23269 23270 23271 23272 23273 23274 23275 23276 23277 23278 23279 23280 23281 23282 23283 23284 23285 23286 23287 23288 23289 23290 23291 23292 23293 23294 23295 23296 23297 23298 23299 23300 23301 23302 23303 23304 23305 23306 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 23259 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
23231 23232 23233 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 23231 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
23239 23240 23241 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 23239 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
23255 23256 23257 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 23255 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
23243 23244 23245 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 23243 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
23247 23248 23249 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 23247 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
23199 23200 23201 23202 23203 23204 23205 23206 23207 23208 23209 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 23199 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
23225 23226 23227 23228 23229 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 23225 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
23189 23190 23191 23192 23193 23194 23195 23196 23197 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 23189 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
23220 23221 23222 23223 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 23220 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
23211 23212 23213 23214 23215 23216 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 23211 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |