class BERGCloud::Client
Public Class Methods
api_token()
click to toggle source
# File lib/bergcloud/client.rb, line 5 def self.api_token @api_token end
api_token=(api_token)
click to toggle source
# File lib/bergcloud/client.rb, line 9 def self.api_token=(api_token) @api_token = api_token end
delete(path, params = {})
click to toggle source
# File lib/bergcloud/client.rb, line 21 def self.delete(path, params = {}) request(path, params, 'delete') end
get(path, params = {})
click to toggle source
# File lib/bergcloud/client.rb, line 13 def self.get(path, params = {}) request(path, params, 'get') end
post(path, params = {})
click to toggle source
# File lib/bergcloud/client.rb, line 17 def self.post(path, params = {}) request(path, params, 'post') end
put(path, params = {})
click to toggle source
# File lib/bergcloud/client.rb, line 25 def self.put(path, params = {}) request(path, params, 'put') end
Private Class Methods
base_url()
click to toggle source
# File lib/bergcloud/client.rb, line 83 def self.base_url "/api/v2" end
host()
click to toggle source
# File lib/bergcloud/client.rb, line 87 def self.host "api.bergcloud.com" end
request(path, params = {}, method)
click to toggle source
# File lib/bergcloud/client.rb, line 31 def self.request(path, params = {}, method) http = Net::HTTP.new(self.host) path = self.base_url + path req_params = JSON.generate(params, quirks_mode: true) # Make a request object case method when 'post' req = Net::HTTP::Post.new(path) req.body = req_params when 'get' req = Net::HTTP::Get.new(path) when 'delete' req = Net::HTTP::Delete.new(path) when 'put' req = Net::HTTP::Put.new(path) req.body = req_params end # Set the required headers req['Accept'] = 'application/json' req['Content-Type'] = 'application/json' req['Berg-API-Token'] = @api_token res = http.request(req) case res.code.to_i when 200, 404, 422 res.body = JSON.parse(res.body) rescue nil if res.body.is_a?(Hash) res.body = Hash[res.body.map{ |k, v| [k.to_sym, v] }] end when 400 raise BERGCloud::Error::RequestError, "Malformed request" when 500 raise BERGCloud::Error::RequestError, "Server error" when 401 raise BERGCloud::Error::RequestError, "Make sure you've set BERGCloud.api_token" else puts "Something else went wrong" raise BERGCloud::Error::RequestError, "Something else went wrong. Response code was: #{res.code}" end return res end