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.
67873 67874 67875 67876 67877 67878 67879 67880 67881 67882 67883 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 67873 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.
67871 67872 67873 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 67871 def base_uri @base_uri end |
#full_uri ⇒ Object (readonly)
Returns the value of attribute full_uri.
67871 67872 67873 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 67871 def full_uri @full_uri end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
67871 67872 67873 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 67871 def path @path end |
Instance Method Details
#delete(&block) ⇒ Object
67931 67932 67933 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 67931 def delete(&block) do_request(Net::HTTP::Delete, &block) end |
#do_request(klass) ⇒ Object
67955 67956 67957 67958 67959 67960 67961 67962 67963 67964 67965 67966 67967 67968 67969 67970 67971 67972 67973 67974 67975 67976 67977 67978 67979 67980 67981 67982 67983 67984 67985 67986 67987 67988 67989 67990 67991 67992 67993 67994 67995 67996 67997 67998 67999 68000 68001 68002 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 67955 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 # DEBUG end 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
67927 67928 67929 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 67927 def get(&block) do_request(Net::HTTP::Get, &block) end |
#options(&block) ⇒ Object
67935 67936 67937 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 67935 def (&block) do_request(Net::HTTP::Options, &block) end |
#patch(&block) ⇒ Object
67951 67952 67953 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 67951 def patch(&block) do_request(PATCH, &block) end |
#post(&block) ⇒ Object
67939 67940 67941 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 67939 def post(&block) do_request(Net::HTTP::Post, &block) end |
#put(&block) ⇒ Object
67943 67944 67945 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 67943 def put(&block) do_request(Net::HTTP::Put, &block) end |
#with_auth(auth) ⇒ Object
67895 67896 67897 67898 67899 67900 67901 67902 67903 67904 67905 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 67895 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
67921 67922 67923 67924 67925 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 67921 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end |
#with_header(name, value) ⇒ Object
67885 67886 67887 67888 67889 67890 67891 67892 67893 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 67885 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
67916 67917 67918 67919 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 67916 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end |
#with_query(params) ⇒ Object
67907 67908 67909 67910 67911 67912 |
# File 'lib/flow_commerce/flow_api_v0_client.rb', line 67907 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end |