module Elefeely

Constants

VERSION

Public Class Methods

phone_numbers() click to toggle source
# File lib/elefeely.rb, line 11
def self.phone_numbers
  request(:get, phone_numbers_uri)
end
send_feeling(params) click to toggle source
# File lib/elefeely.rb, line 15
def self.send_feeling(params)
  request(:post, feelings_uri, body: params)
end
unsubscribe_number(phone_number) click to toggle source
# File lib/elefeely.rb, line 23
def self.unsubscribe_number(phone_number)
  request(:post, phone_number_uri(phone_number), body: {verified: false})
end
verify_number(phone_number) click to toggle source
# File lib/elefeely.rb, line 19
def self.verify_number(phone_number)
  request(:post, phone_number_uri(phone_number), body: {verified: true})
end

Private Class Methods

api_directory() click to toggle source
# File lib/elefeely.rb, line 29
def self.api_directory
  request(:get, api_host)
end
connection() click to toggle source
# File lib/elefeely.rb, line 50
def self.connection
  ::Typhoeus::Request
end
feelings_uri() click to toggle source
# File lib/elefeely.rb, line 37
def self.feelings_uri
  signed_url(api_directory['feelings_url'])
end
parse_response(response) click to toggle source
# File lib/elefeely.rb, line 54
def self.parse_response(response)
  if response.code == 200
    JSON.parse(response.body)
  elsif response.code == 404
    nil
  else
    raise response.body
  end
end
phone_number_uri(phone_number) click to toggle source
# File lib/elefeely.rb, line 41
def self.phone_number_uri(phone_number)
  signed_url(api_directory['phone_url'].gsub('{number}', phone_number))
end
phone_numbers_uri() click to toggle source
# File lib/elefeely.rb, line 33
def self.phone_numbers_uri
  signed_url(api_directory['phones_url'])
end
request(verb, *params) click to toggle source
# File lib/elefeely.rb, line 45
def self.request(verb, *params)
  response = connection.send(verb, *params)
  parse_response(response)
end
signature(url) click to toggle source
# File lib/elefeely.rb, line 70
def self.signature(url)
  validate_credentials!

  OpenSSL::HMAC.hexdigest(OpenSSL::Digest::Digest.new('sha512'), source_secret, url)
end
signed_url(url) click to toggle source
# File lib/elefeely.rb, line 64
def self.signed_url(url)
  signed_url = url
  signed_url << "?source_key=#{source_key}&timestamp=#{Time.now.to_i}"
  signed_url << "&signature=#{signature(signed_url)}"
end