Class: Jerakia::Util::Http

Inherits:
Object
  • Object
show all
Defined in:
lib/jerakia/util/http.rb

Class Method Summary collapse

Class Method Details

.http_send(uri, request, headers = {}, options = {}) ⇒ Object


26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/jerakia/util/http.rb', line 26

def http_send(uri, request, headers={}, options={})
  request.add_field('Content-Type', options[:content_type]) if options[:content_type]

  headers.each do |header, value|
    request.add_field(header, value)
  end

  http = Net::HTTP.new(uri.host, uri.port)
  if options[:ssl]
    http.use_ssl = true
    http.verify_mode = options[:ssl_verify] ? OpenSSL::SSL::VERIFY_PEER : OpenSSL::SSL::VERIFY_NONE
    http.cert = OpenSSL::X509::Certificate.new(options[:ssl_cert]) if options[:ssl_cert]
    http.key = OpenSSL::PKey::RSA.new(options[:ssl_key]) if options[:ssl_key]
  end

  begin
    response = http.request(request)
    return response
  rescue => e
    raise Jerakia::HTTPError, e.message
  end
end

.post(uri_str, data = {}, headers = {}, options = {}) ⇒ Object


11
12
13
14
15
16
# File 'lib/jerakia/util/http.rb', line 11

def post(uri_str, data={}, headers={}, options={})
  uri = URI.parse(uri_str)
  request = Net::HTTP::Post.new(uri.path)
  request.body = data.to_json
  http_send(uri, request, headers, options) 
end

.put(uri_str, data = {}, headers = {}, options = {}) ⇒ Object


18
19
20
21
22
23
# File 'lib/jerakia/util/http.rb', line 18

def put(uri_str, data={}, headers={}, options={})
  uri = URI.parse(uri_str)
  request = Net::HTTP::Put.new(uri.path)
  request.body = data.to_json
  http_send(uri, request, headers, options)
end