class Onecloud::Api
Onecloud
API Authorize Params:
token
-
Client access token
Constants
- API_ENDPOINT
- HTTP_METHODS
Public Class Methods
new(token)
click to toggle source
# File lib/onecloud.rb, line 40 def initialize(token) @token = token uri = URI.parse(API_ENDPOINT) @http = Net::HTTP.start(uri.host, uri.port, use_ssl: true) @http.verify_mode = OpenSSL::SSL::VERIFY_PEER @http.ssl_version = :TLSv1_2 end
Private Instance Methods
encode_path_params(path, params)
click to toggle source
# File lib/onecloud.rb, line 79 def encode_path_params(path, params) [path, URI.encode_www_form(params)].join('?') end
json_request(meth, path, params = {})
click to toggle source
# File lib/onecloud.rb, line 51 def json_request(meth, path, params = {}) response = request(meth, path, params) result = Struct.new(:code, :status, :body) if !response.body.empty? # DELETE requests has empty body json_body = JSON.parse(response.body, quirks_mode: true) result.new(response.code, RESPONSE_CODES[response.code.to_s.to_sym], json_body) else result.new(response.code, nil) end end
request(meth, path, params = {})
click to toggle source
# File lib/onecloud.rb, line 64 def request(meth, path, params = {}) full_path = encode_path_params([API_ENDPOINT, path].join, params) request = HTTP_METHODS[meth.to_sym].new(full_path) request['Content-Type'] = 'application/json' request['Authorization'] = ['Bearer ', @token].join if ['post', 'put'].include?(meth.to_s) request.body = params.to_json return @http.request(request) end @http.request(request) end