class SocialAuthority::Api

Attributes

access_id[R]
screen_names[R]
secret_key[R]
user_ids[R]

Public Class Methods

new(access_id, secret_key) click to toggle source
# File lib/social_authority/api.rb, line 5
def initialize(access_id, secret_key)
  @access_id, @secret_key = access_id, secret_key
end

Public Instance Methods

fetch(user_ids = [], screen_names = []) click to toggle source
# File lib/social_authority/api.rb, line 9
def fetch(user_ids = [], screen_names = [])
  @user_ids, @screen_names = user_ids, screen_names

  uri = URI(generate_request_url)
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = uri.scheme == 'https'
  request = Net::HTTP::Get.new(uri.request_uri)
  response = http.request(request)

  if response.code == '200'
    JSON.parse(response.body)['_embedded']
  else
    raise ResponseError, response.body
  end
end

Private Instance Methods

generate_request_url() click to toggle source
# File lib/social_authority/api.rb, line 26
def generate_request_url
  timestamp = Time.now.to_i + 500

  url = 'https://api.followerwonk.com/social-authority'
  url << '?'
  url << "user_id=#{ user_ids.join(',') };"
  url << "screen_name=#{ screen_names.join(',') };"
  url << "AccessID=#{ access_id };"
  url << "Timestamp=#{ timestamp };"
  url << "Signature=#{ generate_signature(timestamp) }"
  url
end
generate_signature(timestamp) click to toggle source
# File lib/social_authority/api.rb, line 39
def generate_signature(timestamp)
  digest = OpenSSL::Digest.new('sha1')
  data = "#{ access_id }\n#{ timestamp }"
  CGI::escape(Base64.strict_encode64(OpenSSL::HMAC.digest(digest, secret_key, data)))
end