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