class Sugester::SugesterQueue

Constants

MSG_KINDS

Public Class Methods

new(secret, enabled: !Sugester.disabled) click to toggle source
# File lib/sugester.rb, line 106
def initialize(secret, enabled: !Sugester.disabled)
  @enabled = enabled
  if @enabled
    @secret = secret
    c = config(:config)
    if c
      @sqs = Sugester.safe_exec { Aws::SQS::Client.new c }
    end
  end
end
secret_corrupted_warning() click to toggle source
# File lib/sugester.rb, line 45
def self.secret_corrupted_warning
  Sugester.puts_warning "Secret corrupted. Visit sugester to get valid data."
end

Private Class Methods

decrypt(msg) click to toggle source
# File lib/sugester.rb, line 51
def self.decrypt(msg)
  begin
    cipher = OpenSSL::Cipher.new('AES-128-ECB')
    cipher.decrypt()
    cipher.key = "JKLGHJFHGFUOYTIU"
    tempkey = Base64.decode64(URI.decode(msg))
    crypt = cipher.update(tempkey)
    crypt << cipher.final()
  rescue
    crypt = nil
  end
  return crypt
end

Public Instance Methods

activity(client_id, name, options = {}) click to toggle source
# File lib/sugester.rb, line 117
def activity(client_id, name, options = {})
  if @enabled
    Sugester.instance_assert "name", name, String, Symbol
    push :activity, client_id, {name: name}
  end
end
disabled=(v) click to toggle source
# File lib/sugester.rb, line 102
def disabled= v
  @enabled = !v
end
payment(client_id, name, price, date_from, date_to) click to toggle source
# File lib/sugester.rb, line 134
def payment(client_id, name, price, date_from, date_to)
  if @enabled
    Sugester.instance_assert "date_from", date_from, Time, Date, DateTime
    Sugester.instance_assert "date_to", date_to, Time, Date, DateTime
    Sugester.instance_assert "price", price, Numeric
    Sugester.instance_assert "name", name, String, Symbol

    push :payment, client_id, {price: price, from: date_from, to: date_to, name: name}
  end
end
property(client_id, options) click to toggle source
# File lib/sugester.rb, line 124
def property(client_id, options)
  if @enabled
    #options.enum do |name, value|
    #  Sugester.instance_assert "name", name, String, Symbol
    #  Sugester.instance_assert "value", value, String, Symbol, Numeric, Time, DateTime, Date
    #end
    push :property, client_id, {options: options}
  end
end

Private Instance Methods

config(property, throwable = false) click to toggle source
# File lib/sugester.rb, line 65
def config(property, throwable = false)
  JSON.parse(SugesterQueue.decrypt(@secret)).deep_symbolize_keys[property]
rescue StandardError => e
  SugesterQueue.secret_corrupted_warning
  nil
end
push(kind, client_id, msg) click to toggle source
# File lib/sugester.rb, line 73
def push(kind, client_id, msg)
  Sugester.assert "unknown kind", MSG_KINDS.include?(kind)
  Sugester.assert "client_id cannot be blank", client_id.present?
  raw_push msg.merge({
    client_id: client_id,
    kind: kind,
    vsn: VERSION,
  })
end
raw_push(msg) click to toggle source
# File lib/sugester.rb, line 83
def raw_push(msg)
  #TODO max length
  if @sqs
    aws_msg = {
      queue_url: config(:url),
      message_body: msg.merge({
          token: config(:token),
          prefix: config(:prefix),
        }).to_json,
    }
    Sugester.safe_exec { @sqs.send_message aws_msg }
  else
    SugesterQueue.secret_corrupted_warning
  end
end