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.
26247 26248 26249 26250 26251 26252 26253 26254 26255 26256 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26247 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.
26245 26246 26247 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26245 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
26304 26305 26306 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26304 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
26328 26329 26330 26331 26332 26333 26334 26335 26336 26337 26338 26339 26340 26341 26342 26343 26344 26345 26346 26347 26348 26349 26350 26351 26352 26353 26354 26355 26356 26357 26358 26359 26360 26361 26362 26363 26364 26365 26366 26367 26368 26369 26370 26371 26372 26373 26374 26375 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26328 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
26300 26301 26302 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26300 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
26308 26309 26310 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26308 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
26324 26325 26326 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26324 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
26312 26313 26314 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26312 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
26316 26317 26318 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26316 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
26268 26269 26270 26271 26272 26273 26274 26275 26276 26277 26278 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26268 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
26294 26295 26296 26297 26298 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26294 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
26258 26259 26260 26261 26262 26263 26264 26265 26266 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26258 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
26289 26290 26291 26292 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26289 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
26280 26281 26282 26283 26284 26285 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26280 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |