class Io::Flow::Reference::V0::HttpClient::Request
Attributes
base_uri[R]
full_uri[R]
path[R]
Public Class Methods
new(http_handler, base_uri, path)
click to toggle source
# File lib/flow_reference_v0_client.rb, line 991 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
Public Instance Methods
delete(&block)
click to toggle source
# File lib/flow_reference_v0_client.rb, line 1049 def delete(&block) do_request(Net::HTTP::Delete, &block) end
do_request(klass) { |response| ... }
click to toggle source
# File lib/flow_reference_v0_client.rb, line 1073 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)
click to toggle source
# File lib/flow_reference_v0_client.rb, line 1045 def get(&block) do_request(Net::HTTP::Get, &block) end
options(&block)
click to toggle source
# File lib/flow_reference_v0_client.rb, line 1053 def options(&block) do_request(Net::HTTP::Options, &block) end
patch(&block)
click to toggle source
# File lib/flow_reference_v0_client.rb, line 1069 def patch(&block) do_request(PATCH, &block) end
post(&block)
click to toggle source
# File lib/flow_reference_v0_client.rb, line 1057 def post(&block) do_request(Net::HTTP::Post, &block) end
put(&block)
click to toggle source
# File lib/flow_reference_v0_client.rb, line 1061 def put(&block) do_request(Net::HTTP::Put, &block) end
with_auth(auth)
click to toggle source
# File lib/flow_reference_v0_client.rb, line 1013 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)
click to toggle source
# File lib/flow_reference_v0_client.rb, line 1039 def with_body(body) Preconditions.check_not_blank('body', body) @body = body self end
with_header(name, value)
click to toggle source
# File lib/flow_reference_v0_client.rb, line 1003 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)
click to toggle source
Wrapper to set Content-Type header to application/json and set the provided json document as the body
# File lib/flow_reference_v0_client.rb, line 1034 def with_json(json) @headers['Content-Type'] ||= 'application/json; charset=UTF-8' with_body(json) end
with_query(params)
click to toggle source
# File lib/flow_reference_v0_client.rb, line 1025 def with_query(params) Preconditions.assert_class('params', params, Hash) Preconditions.check_state(@params.nil?, "Already have query parameters") @params = params self end
Private Instance Methods
to_query(params={})
click to toggle source
# File lib/flow_reference_v0_client.rb, line 1123 def to_query(params={}) parts = (params || {}).map { |k,v| if v.is_a?(Enumerable) v.map { |el| "%s=%s" % [k, CGI.escape(el.to_s)] } else "%s=%s" % [k, CGI.escape(v.to_s)] end } parts.empty? ? nil : parts.join("&") end