class Roar::Transport::NetHTTP::Request
Attributes
as[R]
body[R]
http[R]
options[R]
req[R]
uri[R]
Public Class Methods
new(options)
click to toggle source
# File lib/roar/transport/net_http/request.rb, line 8 def initialize(options) @uri = parse_uri(options[:uri]) # TODO: add :uri. @as = options[:as] @body = options[:body] @options = options @http = Net::HTTP.new(uri.host, uri.port) unless options[:pem_file].nil? pem = File.read(options[:pem_file]) @http.use_ssl = true @http.cert = OpenSSL::X509::Certificate.new(pem) @http.key = OpenSSL::PKey::RSA.new(pem) @http.verify_mode = options[:ssl_verify_mode].nil? ? OpenSSL::SSL::VERIFY_PEER : options[:ssl_verify_mode] end end
Public Instance Methods
call(what) { |req| ... }
click to toggle source
# File lib/roar/transport/net_http/request.rb, line 24 def call(what) @req = what.new(uri.request_uri) # if options[:ssl] # uri.port = Net::HTTP.https_default_port() # end https! basic_auth! req.content_type = as req["accept"] = as # TODO: test me. # DISCUSS: if Accept is not set, rails treats this request as as "text/html". req.body = body if body yield req if block_given? http.request(req).tap do |res| handle_error!(res) end end
get()
click to toggle source
# File lib/roar/transport/net_http/request.rb, line 44 def get call(Net::HTTP::Get) end
Private Instance Methods
basic_auth!()
click to toggle source
# File lib/roar/transport/net_http/request.rb, line 64 def basic_auth! return unless options[:basic_auth] @req.basic_auth(*options[:basic_auth]) end
handle_error!(res)
click to toggle source
# File lib/roar/transport/net_http/request.rb, line 70 def handle_error!(res) status = res.code.to_i raise Error.new(res) unless status >= 200 and status < 300 end
https!()
click to toggle source
# File lib/roar/transport/net_http/request.rb, line 57 def https! return unless uri.scheme == 'https' @http.use_ssl = true @http.verify_mode = OpenSSL::SSL::VERIFY_NONE end
parse_uri(url)
click to toggle source
# File lib/roar/transport/net_http/request.rb, line 51 def parse_uri(url) uri = URI(url) raise "Incorrect URL `#{url}`. Maybe you forgot http://?" if uri.instance_of?(URI::Generic) uri end