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.
49858 49859 49860 49861 49862 49863 49864 49865 49866 49867 49868 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 49858 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.
49856 49857 49858 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 49856 def base_uri @base_uri end |
#full_uri ⇒ Object (readonly)
Returns the value of attribute full_uri.
49856 49857 49858 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 49856 def full_uri @full_uri end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
49856 49857 49858 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 49856 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
49916 49917 49918 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 49916 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
49940 49941 49942 49943 49944 49945 49946 49947 49948 49949 49950 49951 49952 49953 49954 49955 49956 49957 49958 49959 49960 49961 49962 49963 49964 49965 49966 49967 49968 49969 49970 49971 49972 49973 49974 49975 49976 49977 49978 49979 49980 49981 49982 49983 49984 49985 49986 49987 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 49940 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) # DEBUG curl = ['curl'] # DEBUG if klass != Net::HTTP::Get # DEBUG curl << "-X%s" % klass.name.split("::").last.upcase # DEBUGend if @body # DEBUG tmpfile = "/tmp/rest_client.tmp" # DEBUG File.open(tmpfile, "w") { |os| os << @body.to_s } # DEBUG curl << "-d@%s" % tmpfile request.body = @body end if @auth # DEBUG 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| # DEBUG curl << "-H \"%s: %s\"" % [key, value] request.add_field(key, value) } # DEBUG 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
49912 49913 49914 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 49912 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
49920 49921 49922 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 49920 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
49936 49937 49938 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 49936 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
49924 49925 49926 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 49924 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
49928 49929 49930 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 49928 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
49880 49881 49882 49883 49884 49885 49886 49887 49888 49889 49890 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 49880 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
49906 49907 49908 49909 49910 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 49906 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
49870 49871 49872 49873 49874 49875 49876 49877 49878 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 49870 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
49901 49902 49903 49904 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 49901 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
49892 49893 49894 49895 49896 49897 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 49892 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |