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
-
#base_uri ⇒ Object
readonly
Returns the value of attribute base_uri.
-
#full_uri ⇒ Object
readonly
Returns the value of attribute full_uri.
-
#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.
55235 55236 55237 55238 55239 55240 55241 55242 55243 55244 55245 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55235 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) @full_uri = @base_uri.to_s + @path @params = nil @body = nil @auth = nil @headers = {} @header_keys_lower_case = [] end |
Instance Attribute Details
#base_uri ⇒ Object (readonly)
Returns the value of attribute base_uri.
55233 55234 55235 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55233 def base_uri @base_uri end |
#full_uri ⇒ Object (readonly)
Returns the value of attribute full_uri.
55233 55234 55235 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55233 def full_uri @full_uri end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
55233 55234 55235 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55233 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
55293 55294 55295 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55293 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
55317 55318 55319 55320 55321 55322 55323 55324 55325 55326 55327 55328 55329 55330 55331 55332 55333 55334 55335 55336 55337 55338 55339 55340 55341 55342 55343 55344 55345 55346 55347 55348 55349 55350 55351 55352 55353 55354 55355 55356 55357 55358 55359 55360 55361 55362 55363 55364 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55317 def do_request(klass) Preconditions.assert_class('klass', klass, Class) uri = @full_uri.dup if q = to_query(@params) uri += "?%s" % q end request = klass.send(:new, uri) # DEBUG curl = ['curl'] # DEBUG if klass != Net::HTTP::Get # DEBUG curl << "-X%s" % klass.name.split("::").last.upcase # DEBUG end if @body # DEBUG tmpfile = "/tmp/rest_client.tmp" # DEBUG File.open(tmpfile, "w") { |os| os << @body.to_s } # DEBUG curl << "-d@%s" % tmpfile request.body = @body end if @auth # DEBUG 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| # DEBUG curl << "-H \"%s: %s\"" % [key, value] request.add_field(key, value) } # DEBUG 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
55289 55290 55291 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55289 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
55297 55298 55299 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55297 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
55313 55314 55315 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55313 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
55301 55302 55303 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55301 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
55305 55306 55307 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55305 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
55257 55258 55259 55260 55261 55262 55263 55264 55265 55266 55267 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55257 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
55283 55284 55285 55286 55287 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55283 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
55247 55248 55249 55250 55251 55252 55253 55254 55255 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55247 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
55278 55279 55280 55281 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55278 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
55269 55270 55271 55272 55273 55274 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55269 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |