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.
25937 25938 25939 25940 25941 25942 25943 25944 25945 25946 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 25937 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.
25935 25936 25937 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 25935 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
25994 25995 25996 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 25994 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
26018 26019 26020 26021 26022 26023 26024 26025 26026 26027 26028 26029 26030 26031 26032 26033 26034 26035 26036 26037 26038 26039 26040 26041 26042 26043 26044 26045 26046 26047 26048 26049 26050 26051 26052 26053 26054 26055 26056 26057 26058 26059 26060 26061 26062 26063 26064 26065 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26018 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
25990 25991 25992 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 25990 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
25998 25999 26000 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 25998 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
26014 26015 26016 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26014 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
26002 26003 26004 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26002 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
26006 26007 26008 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 26006 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
25958 25959 25960 25961 25962 25963 25964 25965 25966 25967 25968 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 25958 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
25984 25985 25986 25987 25988 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 25984 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
25948 25949 25950 25951 25952 25953 25954 25955 25956 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 25948 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
25979 25980 25981 25982 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 25979 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
25970 25971 25972 25973 25974 25975 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 25970 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |