class SkylabGenesis::Request
Attributes
response[R]
Public Class Methods
new(configuration)
click to toggle source
# File lib/skylab_genesis/request.rb, line 13 def initialize(configuration) @configuration = configuration end
Public Instance Methods
delete(endpoint)
click to toggle source
# File lib/skylab_genesis/request.rb, line 25 def delete(endpoint) request(Net::HTTP::Delete, request_path(endpoint)) end
get(endpoint, payload = nil)
click to toggle source
# File lib/skylab_genesis/request.rb, line 21 def get(endpoint, payload = nil) request(Net::HTTP::Get, request_path(endpoint), payload) end
patch(endpoint, payload)
click to toggle source
# File lib/skylab_genesis/request.rb, line 33 def patch(endpoint, payload) request(Net::HTTP::Patch, request_path(endpoint), payload) end
post(endpoint, payload)
click to toggle source
# File lib/skylab_genesis/request.rb, line 17 def post(endpoint, payload) request(Net::HTTP::Post, request_path(endpoint), payload) end
put(endpoint, payload)
click to toggle source
# File lib/skylab_genesis/request.rb, line 29 def put(endpoint, payload) request(Net::HTTP::Put, request_path(endpoint), payload) end
Private Instance Methods
handle_response(response)
click to toggle source
# File lib/skylab_genesis/request.rb, line 66 def handle_response(response) case @response when Net::HTTPUnauthorized then raise SkylabGenesis::ClientInvalidKey, 'Invalid api key' when Net::HTTPForbidden then raise SkylabGenesis::ClientInvalidKey, 'Invalid api key' when Net::HTTPNotFound then raise SkylabGenesis::ClientInvalidEndpoint, 'Resource not found' when Net::HTTPBadRequest then raise SkylabGenesis::ClientBadRequest, 'There was an error processing your request' when Net::HTTPTooManyRequests then raise SkylabGenesis::ClientBadRequest, 'The rate limit has been met' when Net::HTTPSuccess response else raise SkylabGenesis::ClientUnknownError, 'An error has occurred' end end
request(method_klass, path, payload = {})
click to toggle source
# File lib/skylab_genesis/request.rb, line 47 def request(method_klass, path, payload = {}) request = method_klass.new(path, 'Content-Type' => 'application/json') request.add_field('X-SLT-API-KEY', @configuration.api_key) request.add_field('X-SLT-API-CLIENT', @configuration.client_stub) payload = payload.to_json http = Net::HTTP.new(@configuration.host, @configuration.port) http.use_ssl = use_ssl? http.set_debug_output($stdout) if @configuration.debug @response = http.request(request, payload) handle_response(@response) rescue Errno::ECONNREFUSED raise SkylabGenesis::ClientConnectionRefused, 'The connection was refused' end
request_path(end_point)
click to toggle source
# File lib/skylab_genesis/request.rb, line 39 def request_path(end_point) "/api/#{@configuration.api_version}/#{end_point}" end
use_ssl?()
click to toggle source
# File lib/skylab_genesis/request.rb, line 43 def use_ssl? @configuration.protocol == 'https' end