class Stacktor::Core::Request
Public Class Methods
new(opts)
click to toggle source
# File lib/stacktor/core/request.rb, line 9 def initialize(opts) @options = opts end
Public Instance Methods
data()
click to toggle source
# File lib/stacktor/core/request.rb, line 26 def data @options[:data] end
do_stream_response?()
click to toggle source
# File lib/stacktor/core/request.rb, line 35 def do_stream_response? !@options[:response_handler].nil? end
execute()
click to toggle source
# File lib/stacktor/core/request.rb, line 44 def execute data = self.data uri = URI(self.url) conn = connection_for(uri) req_kls = Net::HTTP.const_get(self.method.capitalize) headers = self.headers resp_fn = @options[:response_handler] if self.method == "GET" uri.query = data.to_query unless data.nil? req = req_kls.new(uri.request_uri, headers) else data_reg = data_stream = nil if data.is_a?(Hash) data_reg = data.to_json elsif data.respond_to?(:read) data_stream = data headers['Content-Length'] = data.size.to_s else data_reg = data end req = req_kls.new(uri.path, headers) req.body_stream = data_stream unless data_stream.nil? req.body = data_reg unless data_reg.nil? end if resp_fn.nil? @resp = conn.request(req) else @resp = conn.request(req) do |r| r.read_body do |bytes| resp_fn.call(bytes) end end end return self.to_response_hash end
headers()
click to toggle source
# File lib/stacktor/core/request.rb, line 23 def headers @options[:headers] end
method()
click to toggle source
# File lib/stacktor/core/request.rb, line 20 def method @options[:method] end
options()
click to toggle source
# File lib/stacktor/core/request.rb, line 13 def options @options end
response()
click to toggle source
# File lib/stacktor/core/request.rb, line 32 def response @resp end
response=(resp)
click to toggle source
# File lib/stacktor/core/request.rb, line 29 def response=(resp) @resp = resp end
success?()
click to toggle source
# File lib/stacktor/core/request.rb, line 39 def success? @resp && !@resp.code.match(/^20.$/).nil? end
to_response_hash()
click to toggle source
# File lib/stacktor/core/request.rb, line 81 def to_response_hash return nil if @resp.nil? success = self.success? ret = {success: success, code: @resp.code, request: self, response: @resp} if self.do_stream_response? && success ret[:body] = nil else ret[:body] = @resp.body end return ret end
url()
click to toggle source
# File lib/stacktor/core/request.rb, line 17 def url @options[:url] end
Private Instance Methods
connection_for(uri)
click to toggle source
# File lib/stacktor/core/request.rb, line 95 def connection_for(uri) host = uri.host port = uri.port secure = uri.scheme == 'https' c = Net::HTTP.new(host, port) c.use_ssl = secure c.verify_mode = OpenSSL::SSL::VERIFY_NONE return c end