class Onyphe::Client

Constants

HOST
URL
VERSION

Public Class Methods

new(api_key) click to toggle source
# File lib/onyphe/client.rb, line 13
def initialize(api_key)
  @api_key = api_key
end

Private Instance Methods

get(path, params = {}, &block) click to toggle source
# File lib/onyphe/client.rb, line 52
def get(path, params = {}, &block)
  url = url_for(path)
  params["apikey"] = @api_key
  url.query = URI.encode_www_form(params)

  get = Net::HTTP::Get.new(url)
  request(get, &block)
end
https_options() click to toggle source
# File lib/onyphe/client.rb, line 23
def https_options
  if proxy = ENV["HTTPS_PROXY"] || ENV["https_proxy"]
    uri = URI(proxy)
    {
      proxy_address: uri.hostname,
      proxy_port: uri.port,
      proxy_from_env: false,
      use_ssl: true
    }
  else
    { use_ssl: true }
  end
end
post(path, params = {}, &block) click to toggle source
# File lib/onyphe/client.rb, line 61
def post(path, params = {}, &block)
  url = url_for(path)

  post = Net::HTTP::Post.new(url)
  post.set_form_data params
  post["Authorization"] = "apikey #{@api_key}"
  request(post, &block)
end
request(req) { |response| ... } click to toggle source
# File lib/onyphe/client.rb, line 37
def request(req)
  Net::HTTP.start(HOST, 443, https_options) do |http|
    http_response = http.request(req)
    code = http_response.code
    raise Error, "Unsupported response code returned: #{http_response.code}" unless code.start_with?("20")

    response = JSON.parse(http_response.body)
    error = response.dig("error")
    message = response.dig("message")
    raise Error, message if error&.to_i&.positive?

    yield response
  end
end
url_for(path) click to toggle source
# File lib/onyphe/client.rb, line 19
def url_for(path)
  URI(URL + path)
end