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.
27252 27253 27254 27255 27256 27257 27258 27259 27260 27261 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 27252 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.
27250 27251 27252 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 27250 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
27309 27310 27311 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 27309 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
27333 27334 27335 27336 27337 27338 27339 27340 27341 27342 27343 27344 27345 27346 27347 27348 27349 27350 27351 27352 27353 27354 27355 27356 27357 27358 27359 27360 27361 27362 27363 27364 27365 27366 27367 27368 27369 27370 27371 27372 27373 27374 27375 27376 27377 27378 27379 27380 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 27333 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
27305 27306 27307 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 27305 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
27313 27314 27315 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 27313 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
27329 27330 27331 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 27329 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
27317 27318 27319 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 27317 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
27321 27322 27323 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 27321 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
27273 27274 27275 27276 27277 27278 27279 27280 27281 27282 27283 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 27273 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
27299 27300 27301 27302 27303 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 27299 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
27263 27264 27265 27266 27267 27268 27269 27270 27271 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 27263 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
27294 27295 27296 27297 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 27294 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
27285 27286 27287 27288 27289 27290 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 27285 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |