module Requests
Constants
- CA_FILE
Public Class Methods
request(method, url, headers: {}, data: nil, params: nil, auth: nil, proxy: nil, options: {})
click to toggle source
# File lib/requests.rb, line 20 def self.request(method, url, headers: {}, data: nil, params: nil, auth: nil, proxy: nil, options: {}) uri = URI.parse(url) uri.query = encode_www_form(params) if params body = process_params(headers: headers, data: data) if data basic_auth(headers, *auth) if auth proxy = proxy.to_h.values_at(:host, :port, :user, :password) response = Net::HTTP.start(uri.host, uri.port, *proxy, opts(uri, options)) do |http| http.send_request(method, uri, body, headers) end if response.is_a?(Net::HTTPSuccess) Response.new(response.code, response.to_hash, response.body) else raise Error, response end end
Private Class Methods
basic_auth(headers, user, pass)
click to toggle source
# File lib/requests.rb, line 63 def self.basic_auth(headers, user, pass) headers['Authorization'] = 'Basic ' + ["#{user}:#{pass}"].pack('m0') end
encode_www_form(params)
click to toggle source
# File lib/requests.rb, line 48 def self.encode_www_form(params) URI.encode_www_form(params) end
opts(uri, options)
click to toggle source
# File lib/requests.rb, line 52 def self.opts(uri, options) if uri.scheme == 'https' { use_ssl: true, verify_mode: OpenSSL::SSL::VERIFY_PEER, ca_file: CA_FILE, read_timeout: options[:read_timeout], open_timeout: options[:open_timeout], } end end
process_params(headers: nil, data: nil)
click to toggle source
# File lib/requests.rb, line 67 def self.process_params(headers: nil, data: nil) if not data.kind_of?(Enumerable) data else headers['content-type'] = 'application/x-www-form-urlencoded' encode_www_form(data) end end