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.
33056 33057 33058 33059 33060 33061 33062 33063 33064 33065 33066 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 33056 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.
33054 33055 33056 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 33054 def base_uri @base_uri end |
#full_uri ⇒ Object (readonly)
Returns the value of attribute full_uri.
33054 33055 33056 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 33054 def full_uri @full_uri end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
33054 33055 33056 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 33054 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
33114 33115 33116 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 33114 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
33138 33139 33140 33141 33142 33143 33144 33145 33146 33147 33148 33149 33150 33151 33152 33153 33154 33155 33156 33157 33158 33159 33160 33161 33162 33163 33164 33165 33166 33167 33168 33169 33170 33171 33172 33173 33174 33175 33176 33177 33178 33179 33180 33181 33182 33183 33184 33185 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 33138 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
33110 33111 33112 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 33110 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
33118 33119 33120 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 33118 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
33134 33135 33136 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 33134 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
33122 33123 33124 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 33122 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
33126 33127 33128 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 33126 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
33078 33079 33080 33081 33082 33083 33084 33085 33086 33087 33088 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 33078 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
33104 33105 33106 33107 33108 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 33104 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
33068 33069 33070 33071 33072 33073 33074 33075 33076 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 33068 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
33099 33100 33101 33102 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 33099 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
33090 33091 33092 33093 33094 33095 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 33090 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |