class AccessWatch::Client

Constants

CERTIFICATE_AUTHORITIES_PATH
HTTPS

Attributes

api_endpoint[R]
api_key[R]
api_secret[R]
api_timeout[R]

Public Class Methods

new(options) click to toggle source
# File lib/access_watch/client.rb, line 10
def initialize(options)
  @api_secret = options[:api_secret]
  @api_timeout = options[:api_timeout] || 1
  @api_key = options[:api_key] or raise "AccessWatch api_key is mandatory."
  @api_endpoint = options[:api_endpoint] || "https://access.watch/api/1.0/"
end

Public Instance Methods

default_headers() click to toggle source
# File lib/access_watch/client.rb, line 32
def default_headers
  {
    "Api-Key" => api_key,
    "Accept" => "application/json",
    "Content-Type" => "application/json",
    "User-Agent" => user_agent,
  }
end
get(path, params = nil) click to toggle source
# File lib/access_watch/client.rb, line 24
def get(path, params = nil)
  uri = URI.parse(api_endpoint + path)
  uri.query = URI.encode_www_form(params) if params
  request = Net::HTTP::Get.new(uri.request_uri, default_headers)
  response = http(uri).request(request)
  response.body
end
post(path, data) click to toggle source
# File lib/access_watch/client.rb, line 17
def post(path, data)
  uri = URI(api_endpoint + path)
  post = Net::HTTP::Post.new(uri.path, default_headers)
  post.body = data.to_json
  resp = http(uri).request(post)
end
user_agent() click to toggle source
# File lib/access_watch/client.rb, line 41
def user_agent
  return @user_agent if @user_agent
  result = "Access Watch/#{AccessWatch::VERSION} Ruby/#{RUBY_VERSION}"
  result += " Rails/#{Rails.version}" if defined?(Rails)
  @user_agent = result
end

Private Instance Methods

http(uri) click to toggle source
# File lib/access_watch/client.rb, line 53
def http(uri)
  http = Net::HTTP.new(uri.host, uri.port)
  http.open_timeout = api_timeout
  if uri.scheme == HTTPS
    http.verify_mode = OpenSSL::SSL::VERIFY_PEER
    http.ca_file = CERTIFICATE_AUTHORITIES_PATH
    http.use_ssl = true
  end
  http
end