class PassiveTotal::Client::Base
Constants
- BASE_URL
- HOST
- VERSION
Public Class Methods
new(username:, api_key:)
click to toggle source
# File lib/passivetotal/clients/base.rb, line 14 def initialize(username:, api_key:) @username = username @api_key = api_key end
Private Instance Methods
_delete(path, params = {}, &block)
click to toggle source
# File lib/passivetotal/clients/base.rb, line 95 def _delete(path, params = {}, &block) request = build_request(type: "DELETE", path: path, params: params) make_request(request, &block) end
_get(path, params = {}, &block)
click to toggle source
# File lib/passivetotal/clients/base.rb, line 80 def _get(path, params = {}, &block) request = build_request(type: "GET", path: path, params: params) make_request(request, &block) end
_post(path, params = {}, &block)
click to toggle source
# File lib/passivetotal/clients/base.rb, line 85 def _post(path, params = {}, &block) request = build_request(type: "POST", path: path, params: params) make_request(request, &block) end
_put(path, params = {}, &block)
click to toggle source
# File lib/passivetotal/clients/base.rb, line 90 def _put(path, params = {}, &block) request = build_request(type: "PUT", path: path, params: params) make_request(request, &block) end
build_request(type: "GET", path:, params: {})
click to toggle source
# File lib/passivetotal/clients/base.rb, line 57 def build_request(type: "GET", path:, params: {}) uri = url_for(path) uri.query = URI.encode_www_form(params) if type == "GET" request = case type when "GET" Net::HTTP::Get.new(uri) when "POST" Net::HTTP::Post.new(uri) when "PUT" Net::HTTP::Put.new(path) when "DELETE" Net::HTTP::Delete.new(path) else raise ArgumentError, "#{type} HTTP method is not supported" end request.body = JSON.generate(params) unless type == "GET" request.basic_auth @username, @api_key request end
https_options()
click to toggle source
# File lib/passivetotal/clients/base.rb, line 25 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
make_request(req) { |json| ... }
click to toggle source
# File lib/passivetotal/clients/base.rb, line 39 def make_request(req) Net::HTTP.start(HOST, 443, https_options) do |http| response = http.request(req) code = response.code.to_i body = response.body json = JSON.parse(body) case code when 200 yield json else error = json.dig("error") || body raise Error, "Unsupported response code returned: #{code} - #{error}" end end end
url_for(path)
click to toggle source
# File lib/passivetotal/clients/base.rb, line 21 def url_for(path) URI(BASE_URL + path) end