class Shanon::AbstractClient

Attributes

conn[R]
secrets[R]
token[R]

Public Class Methods

new() click to toggle source
# File lib/shanon/abstract_client.rb, line 8
def initialize
  @secrets = get_secrets
  @conn = build_client
  @token = get_token
end

Private Instance Methods

build_client() click to toggle source
# File lib/shanon/abstract_client.rb, line 25
def build_client
  fqdn = secrets[:fqdn]
  host = %(https://#{fqdn})

  ::Faraday.new(url: host) do |builder|
    builder.use Faraday::Request::UrlEncoded
    builder.use Faraday::Response::Logger
    builder.use Faraday::Adapter::NetHttp
  end
end
get_secrets() click to toggle source
# File lib/shanon/abstract_client.rb, line 16
def get_secrets
  {
    api_key: Shanon.config.api_key,
    fqdn: Shanon.config.fqdn,
    password: Shanon.config.password,
    secret_key: Shanon.config.secret_key
  }
end
get_signature(base) click to toggle source
# File lib/shanon/abstract_client.rb, line 51
def get_signature(base)
  ::OpenSSL::HMAC.hexdigest('sha1', secrets[:secret_key], base)
end
get_token() click to toggle source
# File lib/shanon/abstract_client.rb, line 36
def get_token
  # override by Authenticatable
end
params_with_signature(opts={}) click to toggle source
# File lib/shanon/abstract_client.rb, line 40
def params_with_signature(opts={})
  seeds = { api_key: secrets[:api_key] }.merge!(opts)
  seeds.merge!(token: token) if token

  base = seeds.sort.reduce('') do |s, (k, v)|
    s.concat %(#{k}#{v})
  end

  seeds.merge!({ api_sig: get_signature(base) })
end