class Pocus::Session
Sends authenticated JSON requests to remote service using HTTPS.
Attributes
base_url[R]
credentials[R]
logger[RW]
Public Class Methods
new(host: 'api.invoc.us', app_id:, username:, password:, logger: Logger.new('/dev/null'))
click to toggle source
# File lib/pocus/session.rb, line 23 def initialize(host: 'api.invoc.us', app_id:, username:, password:, logger: Logger.new('/dev/null')) @base_url = "https://#{host}/icp".freeze @credentials = { 'API-AppId' => app_id, 'API-Username' => username, 'API-Password' => password } @logger = logger end
Public Instance Methods
pro?()
click to toggle source
'Pro' is legacy as moniker dropped.
# File lib/pocus/session.rb, line 34 def pro? base_url =~ /invoc.us/ end
send_request(method, path, fields = {})
click to toggle source
Accepts hash of fields to send. Returns parsed response body, always a hash.
# File lib/pocus/session.rb, line 40 def send_request(method, path, fields = {}) response = send_logged_request(URI(base_url + path), method, request_data(fields)) fail UnexpectedHttpResponse, response unless response.is_a? Net::HTTPSuccess JSON.parse(response.body) end
Protected Instance Methods
headers(type = 'application/json')
click to toggle source
# File lib/pocus/session.rb, line 48 def headers(type = 'application/json') Hash['API-Version' => '2.2', 'Accept' => type, 'Content-Type' => type] end
https(uri)
click to toggle source
# File lib/pocus/session.rb, line 52 def https(uri) Net::HTTP.new(uri.host, uri.port).tap do |http| http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE end end
log_request_response(uri, method, data) { |uri, method, data| ... }
click to toggle source
# File lib/pocus/session.rb, line 69 def log_request_response(uri, method, data) logger.info "[#{self.class.name}] request = #{method} #{uri}#{data ? '?' + data : ''}" response = nil tms = Benchmark.measure do response = yield uri, method, data end logger.info "[#{self.class.name}] response (#{ms(tms)}ms): #{response.inspect} #{response.body}" response end
ms(tms)
click to toggle source
# File lib/pocus/session.rb, line 79 def ms(tms) (tms.real*1000).round(3) end
request_data(fields)
click to toggle source
# File lib/pocus/session.rb, line 59 def request_data(fields) fields.to_json unless fields.empty? end
send_logged_request(uri, method, data)
click to toggle source
# File lib/pocus/session.rb, line 63 def send_logged_request(uri, method, data) log_request_response(uri, method, data) do |u, m, d| https(uri).send_request(m, u.to_s, d, headers.merge(credentials)) end end