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.
28253 28254 28255 28256 28257 28258 28259 28260 28261 28262 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28253 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.
28251 28252 28253 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28251 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
28310 28311 28312 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28310 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
28334 28335 28336 28337 28338 28339 28340 28341 28342 28343 28344 28345 28346 28347 28348 28349 28350 28351 28352 28353 28354 28355 28356 28357 28358 28359 28360 28361 28362 28363 28364 28365 28366 28367 28368 28369 28370 28371 28372 28373 28374 28375 28376 28377 28378 28379 28380 28381 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28334 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
28306 28307 28308 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28306 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
28314 28315 28316 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28314 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
28330 28331 28332 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28330 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
28318 28319 28320 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28318 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
28322 28323 28324 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28322 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
28274 28275 28276 28277 28278 28279 28280 28281 28282 28283 28284 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28274 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
28300 28301 28302 28303 28304 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28300 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
28264 28265 28266 28267 28268 28269 28270 28271 28272 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28264 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
28295 28296 28297 28298 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28295 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
28286 28287 28288 28289 28290 28291 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28286 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |