class Smscru::Callback

Attributes

config[R]

Public Class Methods

new(options) click to toggle source
# File lib/smscru/callback.rb, line 7
def initialize(options)
  @config = Smscru.config.dup
  @config.update(options)
end

Public Instance Methods

on_message(&block) click to toggle source
# File lib/smscru/callback.rb, line 22
def on_message(&block)
  @on_message = block
end
on_status(&block) click to toggle source
# File lib/smscru/callback.rb, line 26
def on_status(&block)
  @on_status = block
end
run(params) click to toggle source
# File lib/smscru/callback.rb, line 12
def run(params)
  return if params['sha1'] != signature(params)

  if params['mes']
    @on_message.call(params)
  else
    @on_status.call(params)
  end
end
signature(params) click to toggle source
# File lib/smscru/callback.rb, line 30
def signature(params)
  keys = if params['mes']
    %w(phone mes to)
  else
    %w(id phone status)
  end

  values = params.values_at(*keys) << config.secret

  Digest::SHA1.hexdigest(values.join(':'))
end