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.
28120 28121 28122 28123 28124 28125 28126 28127 28128 28129 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28120 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.
28118 28119 28120 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28118 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
28177 28178 28179 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28177 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
28201 28202 28203 28204 28205 28206 28207 28208 28209 28210 28211 28212 28213 28214 28215 28216 28217 28218 28219 28220 28221 28222 28223 28224 28225 28226 28227 28228 28229 28230 28231 28232 28233 28234 28235 28236 28237 28238 28239 28240 28241 28242 28243 28244 28245 28246 28247 28248 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28201 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
28173 28174 28175 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28173 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
28181 28182 28183 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28181 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
28197 28198 28199 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28197 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
28185 28186 28187 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28185 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
28189 28190 28191 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28189 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
28141 28142 28143 28144 28145 28146 28147 28148 28149 28150 28151 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28141 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
28167 28168 28169 28170 28171 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28167 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
28131 28132 28133 28134 28135 28136 28137 28138 28139 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28131 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
28162 28163 28164 28165 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28162 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
28153 28154 28155 28156 28157 28158 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 28153 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |