Module: Requests

Extended by:
Sugar
Defined in:
lib/requests.rb,
lib/requests/sugar.rb

Defined Under Namespace

Modules: Sugar Classes: Response

Constant Summary collapse

Error =
Class.new(StandardError)
CA_FILE =
ENV.fetch('REQUESTS_CA_FILE',
File.expand_path('../cacert.pem', __FILE__))

Class Method Summary collapse

Methods included from Sugar

delete, get, head, options, patch, post, put, trace

Class Method Details

.basic_auth(headers, user, pass) ⇒ Object



50
51
52
# File 'lib/requests.rb', line 50

def self.basic_auth(headers, user, pass)
  headers['Authorization'] = 'Basic ' + ["#{user}:#{pass}"].pack('m0')
end

.encode_www_form(params) ⇒ Object



37
38
39
# File 'lib/requests.rb', line 37

def self.encode_www_form(params)
  URI.encode_www_form(params)
end

.opts(uri) ⇒ Object



41
42
43
44
45
46
47
48
# File 'lib/requests.rb', line 41

def self.opts(uri)
  if uri.scheme == 'https'
    { use_ssl: true,
      verify_mode: OpenSSL::SSL::VERIFY_PEER,
      ca_file: CA_FILE
    }
  end
end

.process_params(headers: nil, data: nil) ⇒ Object



54
55
56
57
58
59
60
61
62
# File 'lib/requests.rb', line 54

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

.request(method, url, headers: {}, data: nil, params: nil, auth: nil) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/requests.rb', line 12

def self.request(method, url,
  headers: {},
  data: nil,
  params: nil,
  auth: nil)

  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

  response = Net::HTTP.start(uri.host, uri.port, opts(uri)) 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.inspect
  end
end