Module: Koa::Kik
- Includes:
- Measurement
- Defined in:
- lib/koa/kik.rb
Defined Under Namespace
Classes: PushResponse
Class Method Summary collapse
- .purchase(signedData, username, host) ⇒ Object
- .push(token, message, data) ⇒ Object
- .request(url, body) ⇒ Object
- .request_with_retry(url, body, tries, seconds = 2) ⇒ Object
- .verify(signedData, username, host) ⇒ Object
Methods included from Measurement
Class Method Details
.purchase(signedData, username, host) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/koa/kik.rb', line 10 def self.purchase(signedData, username, host) 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" Koa::Logger.count("kikpurchase.fail", 1, {source: code, username: username, signed_data: signedData}) return false end JSON.parse(response.body) end |
.push(token, message, data) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/koa/kik.rb', line 23 def self.push(token, , data) url = "https://api.kik.com/push/v1/send" body = { token: token, ticker: , 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? Koa::Logger.count("notification_sent", 1) else Koa::Logger.count("notification_fail", 1, {source: response_code}) end end end |
.request(url, body) ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/koa/kik.rb', line 60 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) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/koa/kik.rb', line 47 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 Koa::Logger.count("kiktimeout", 1) nil end end end |
.verify(signedData, username, host) ⇒ Object
42 43 44 45 |
# File 'lib/koa/kik.rb', line 42 def self.verify(signedData, username, host) url = "https://auth.kik.com/verification/v1/check?u=#{username}&d=#{host}" request_with_retry(url, signedData, 5).body end |