class SteamTracks::Api::V1

Public Class Methods

ackSignup(token, user = nil) click to toggle source
# File lib/steam_tracks/api/v1/signup.rb, line 22
def self.ackSignup(token, user = nil)
  data = { token: token }
  data[:user] = user unless user.nil?
  self.request :post, "signup/ack", data
end
getSignupStatus(token) click to toggle source
# File lib/steam_tracks/api/v1/signup.rb, line 17
def self.getSignupStatus(token)
  result = self.request :get, "signup/status", { token: token }
  return result
end
getSignupToken(arguments = {}) click to toggle source
# File lib/steam_tracks/api/v1/signup.rb, line 4
def self.getSignupToken(arguments = {})
  result = self.request :get, "signup/token", arguments
  return result["token"] if result["token"]
  nil
end
getSignupURL(token = nil, arguments = {}) click to toggle source
# File lib/steam_tracks/api/v1/signup.rb, line 10
def self.getSignupURL(token = nil, arguments = {})
  if token.nil?
    token = self.getSignupToken(arguments)
  end
  "#{SteamTracks.steamtracks_base}/appauth/#{token}"
end
notify(options = {}) click to toggle source
# File lib/steam_tracks/api/v1/notify.rb, line 4
def self.notify(options = {})
  self.request :post, "notify", options
end
request(method, resource, params = {}) click to toggle source
# File lib/steam_tracks/api/v1/request.rb, line 11
def self.request method, resource, params = {}
  url = "#{SteamTracks.api_base}/v#{SteamTracks.api_version}/#{resource}"

  # add time param for security
  params[:t] = Time.now.to_i

  uri = URI.parse(url)
  https = Net::HTTP.new(uri.host, uri.port)
  https.use_ssl = true

  request = nil
  payload = params.to_json
  signature = Base64.encode64(OpenSSL::HMAC.digest('sha1', SteamTracks.api_secret, payload))

  if method == :get
    uri.query = "payload=#{URI.encode(payload)}"
    request = Net::HTTP::Get.new(uri, { 'Content-Type' => 'application/json'})
  elsif method == :post
    request = Net::HTTP::Post.new(uri, { 'Content-Type' => 'application/json'})
    request.body = payload
  else
    raise "invalid request method"
  end

  request["SteamTracks-Key"] = SteamTracks.api_key
  request["SteamTracks-Signature"] = URI.encode(signature)
  request["ACCEPT"] = "application/json"

  response = https.request(request)

  json = JSON(response.body)

  if response.code.to_i != 200
    raise json["error"]
  end
  return json["result"] if json.has_key?("result")
  json
end
userChanges(from_timestamp = nil, fields = []) click to toggle source
# File lib/steam_tracks/api/v1/users.rb, line 33
def self.userChanges(from_timestamp = nil, fields = [])
  arguments = {}
  arguments[:from_timestamp] = (from_timestamp.nil? ? 0 : from_timestamp.to_i)
  arguments[:fields] = fields unless fields.count == 0
  self.request :get, "users/changes", arguments
end
userCount() click to toggle source
# File lib/steam_tracks/api/v1/users.rb, line 21
def self.userCount
  self.request :get, "users/count"
end
userFlushLeavers() click to toggle source
# File lib/steam_tracks/api/v1/users.rb, line 29
def self.userFlushLeavers
  self.request :post, "users/flushleavers"
end
userGames() click to toggle source
# File lib/steam_tracks/api/v1/users.rb, line 8
def self.userGames
  self.request :get, "users/games"
end
userInfo(user32) click to toggle source
# File lib/steam_tracks/api/v1/users.rb, line 12
def self.userInfo(user32)
  self.request :get, "users/info", { user: user32 }
end
userLeavers() click to toggle source
# File lib/steam_tracks/api/v1/users.rb, line 25
def self.userLeavers
  self.request :get, "users/leavers"
end
userList(page = nil) click to toggle source
# File lib/steam_tracks/api/v1/users.rb, line 16
def self.userList(page = nil)
  arguments = (page.nil? ? {} : {page: page})
  self.request :get, "users", arguments
end
userStates() click to toggle source
# File lib/steam_tracks/api/v1/users.rb, line 4
def self.userStates
  self.request :get, "users/states"
end