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