module KOAUtils::Kik

Public Class Methods

purchase(signedData, username, host) click to toggle source
# File lib/koa-utils/kik.rb, line 6
def self.purchase(signedData, username, host)
  KOAUtils::Logger.measure_block("kikpurchase") do
    url = "https://purchase.kik.com/verification/v1/check?u=#{username}&d=#{host}"
    response = request_with_retry(url, signedData, 5)
    if response.nil? or response.code.to_i != 200
      code = (response and response.code)
      code ||= "nil"
      KOAUtils::Logger.count("kikpurchase.fail", 1,
        {source: code, username: username, signed_data: signedData})
      return false
    end
    JSON.parse(response.body)
  end
end
push(token, message, data) click to toggle source
# File lib/koa-utils/kik.rb, line 21
def self.push(token, message, data)
  KOAUtils::Logger.measure_block("kikpush") do
    url = "https://api.kik.com/push/v1/send"
    body = {
      token: token,
      ticker: message,
      data: data
    }
    response = request_with_retry(url, body.to_json, 1, 1)
    response_code = (response && response.code)
    response_code ||= "nil"
    PushResponse.new(response).tap do |pr|
      if pr.success?
        KOAUtils::Logger.count("notification_sent", 1)
      else
        KOAUtils::Logger.count("notification_fail", 1, {source: response_code})
      end
    end
  end
end
request(url, body) click to toggle source
# File lib/koa-utils/kik.rb, line 62
def self.request(url, body)
  uri = URI.parse(url)
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true
  request = Net::HTTP::Post.new(uri.request_uri)
  request.add_field('Content-Type', 'application/json')
  request.add_field('Content-Length', body.size)
  
  request.body = body
  http.request(request)
end
request_with_retry(url, body, tries, seconds = 2) click to toggle source
# File lib/koa-utils/kik.rb, line 49
def self.request_with_retry(url, body, tries, seconds = 2)
  tries.times do
    begin
      Timeout::timeout(seconds) do 
        return request(url, body)
      end
    rescue Timeout::Error
      KOAUtils::Logger.count("kiktimeout", 1)
      nil
    end
  end
end
verify(signedData, username, host) click to toggle source
# File lib/koa-utils/kik.rb, line 42
def self.verify(signedData, username, host)
  KOAUtils::Logger.measure_block("kikverify") do
    url = "https://auth.kik.com/verification/v1/check?u=#{username}&d=#{host}"
    request_with_retry(url, signedData, 5).body
  end
end