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.
35123 35124 35125 35126 35127 35128 35129 35130 35131 35132 35133 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35123 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.
35121 35122 35123 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35121 def base_uri @base_uri end |
#full_uri ⇒ Object (readonly)
Returns the value of attribute full_uri.
35121 35122 35123 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35121 def full_uri @full_uri end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
35121 35122 35123 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35121 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
35181 35182 35183 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35181 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
35205 35206 35207 35208 35209 35210 35211 35212 35213 35214 35215 35216 35217 35218 35219 35220 35221 35222 35223 35224 35225 35226 35227 35228 35229 35230 35231 35232 35233 35234 35235 35236 35237 35238 35239 35240 35241 35242 35243 35244 35245 35246 35247 35248 35249 35250 35251 35252 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35205 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) 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
35177 35178 35179 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35177 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
35185 35186 35187 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35185 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
35201 35202 35203 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35201 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
35189 35190 35191 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35189 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
35193 35194 35195 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35193 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
35145 35146 35147 35148 35149 35150 35151 35152 35153 35154 35155 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35145 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
35171 35172 35173 35174 35175 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35171 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
35135 35136 35137 35138 35139 35140 35141 35142 35143 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35135 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
35166 35167 35168 35169 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35166 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
35157 35158 35159 35160 35161 35162 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 35157 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |