Class: Soracom::RestClient

Inherits:
Object
  • Object
show all
Defined in:
lib/soracom/rest_client.rb

Overview

‘rest-client’ gem like class

Class Method Summary collapse

Class Method Details

.delete(url, headers = {}) ⇒ Object



44
45
46
# File 'lib/soracom/rest_client.rb', line 44

def self.delete(url, headers = {})
  request('delete', url, headers)
end

.get(url, headers = {}) ⇒ Object



32
33
34
# File 'lib/soracom/rest_client.rb', line 32

def self.get(url, headers = {})
  request('get', url, headers)
end

.post(url, payload, headers = {}) ⇒ Object



36
37
38
# File 'lib/soracom/rest_client.rb', line 36

def self.post(url, payload, headers = {})
  request('post', url, headers, payload)
end

.put(url, payload, headers = {}) ⇒ Object



40
41
42
# File 'lib/soracom/rest_client.rb', line 40

def self.put(url, payload, headers = {})
  request('put', url, headers, payload)
end

.request(verb, url, headers = {}, payload = nil) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/soracom/rest_client.rb', line 5

def self.request(verb, url, headers = {}, payload = nil)
  payload = payload.to_json if payload.class == Hash
  query_string = ''
  if headers[:params]
    query_string = '?' + headers[:params].map { |k, v| "#{k}=#{v}" }.join('&')
    headers.delete(:params)
  end
  headers = Hash[headers.map { |k, v| [k.to_s.capitalize.tr('_', '-'), v] }]
  uri = URI(url + query_string)
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true if uri.scheme == 'https'
  http.set_debug_output($stderr) if ENV['SORACOM_DEBUG']
  case verb
  when 'get'
    response = http.get(uri.path + query_string, headers)
  when 'post'
    response = http.post(uri.path + query_string, payload, headers)
  when 'put'
    response = http.put(uri.path + query_string, payload, headers)
  when 'delete'
    response = http.delete(uri.path + query_string, headers)
  else
    fail "unsupported HTTP verb #{verb}"
  end
  response
end