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
41109 41110 41111 41112 41113 41114 41115 41116 41117 41118 41119 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41109 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.
41107 41108 41109 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41107 def base_uri @base_uri end |
#full_uri ⇒ Object (readonly)
Returns the value of attribute full_uri.
41107 41108 41109 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41107 def full_uri @full_uri end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
41107 41108 41109 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41107 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
41167 41168 41169 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41167 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
41191 41192 41193 41194 41195 41196 41197 41198 41199 41200 41201 41202 41203 41204 41205 41206 41207 41208 41209 41210 41211 41212 41213 41214 41215 41216 41217 41218 41219 41220 41221 41222 41223 41224 41225 41226 41227 41228 41229 41230 41231 41232 41233 41234 41235 41236 41237 41238 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41191 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
41163 41164 41165 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41163 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
41171 41172 41173 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41171 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
41187 41188 41189 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41187 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
41175 41176 41177 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41175 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
41179 41180 41181 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41179 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
41131 41132 41133 41134 41135 41136 41137 41138 41139 41140 41141 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41131 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
41157 41158 41159 41160 41161 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41157 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
41121 41122 41123 41124 41125 41126 41127 41128 41129 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41121 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
41152 41153 41154 41155 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41152 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
41143 41144 41145 41146 41147 41148 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 41143 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |