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.
55136 55137 55138 55139 55140 55141 55142 55143 55144 55145 55146 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55136 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.
55134 55135 55136 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55134 def base_uri @base_uri end |
#full_uri ⇒ Object (readonly)
Returns the value of attribute full_uri.
55134 55135 55136 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55134 def full_uri @full_uri end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
55134 55135 55136 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55134 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
55194 55195 55196 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55194 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
55218 55219 55220 55221 55222 55223 55224 55225 55226 55227 55228 55229 55230 55231 55232 55233 55234 55235 55236 55237 55238 55239 55240 55241 55242 55243 55244 55245 55246 55247 55248 55249 55250 55251 55252 55253 55254 55255 55256 55257 55258 55259 55260 55261 55262 55263 55264 55265 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55218 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
55190 55191 55192 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55190 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
55198 55199 55200 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55198 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
55214 55215 55216 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55214 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
55202 55203 55204 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55202 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
55206 55207 55208 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55206 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
55158 55159 55160 55161 55162 55163 55164 55165 55166 55167 55168 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55158 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
55184 55185 55186 55187 55188 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55184 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
55148 55149 55150 55151 55152 55153 55154 55155 55156 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55148 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
55179 55180 55181 55182 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55179 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
55170 55171 55172 55173 55174 55175 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 55170 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |