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