class Userstack::Client

A class which wraps calls to Userstack API

Constants

USER_AGENT

Attributes

access_key[R]
legacy[R]
use_ssl[R]

Public Class Methods

new(access_key, use_ssl: true, legacy: false) click to toggle source

@param access_key [String] Userstack Access key @param use_ssl [Boolean] Use ssl or not @param legacy [Boolean] Legacy response @raise [ArgumentError] when `access_key` is invalid @see userstack.com/documentation

# File lib/userstack/client.rb, line 17
def initialize(access_key, use_ssl: true, legacy: false)
  raise ArgumentError, 'Invalid Access key' if access_key.nil? || access_key.empty?

  @access_key = access_key.freeze
  @use_ssl = use_ssl
  @legacy = legacy
  freeze
end

Public Instance Methods

parse(useragent) click to toggle source

Parse an useragent using Userstack

@param useragent [String] an useragent @return [Hash] a Hash generated by parsing the JSON returned

from the API call, just `{}` on parsing failure

@raise [ArgumentError] when `useragent` is invalid

# File lib/userstack/client.rb, line 32
def parse(useragent)
  raise ArgumentError, 'Invalid useragent' if useragent.nil? || useragent.empty?

  response = request(useragent)
  parse_as_json(response.body)
end

Private Instance Methods

parse_as_json(json_text) click to toggle source
# File lib/userstack/client.rb, line 50
def parse_as_json(json_text)
  json_text ||= '{}'
  JSON.parse(json_text)
rescue JSON::ParserError
  {}
end
request(useragent) click to toggle source
# File lib/userstack/client.rb, line 43
def request(useragent)
  uri = UriBuilder.execute(access_key, useragent, use_ssl, legacy)
  Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http|
    http.get(uri.to_s, 'User-Agent' => USER_AGENT)
  end
end