class Soda::Client

Constants

DEFAULTS

Public Class Methods

middleware() click to toggle source
# File lib/soda/client.rb, line 13
def middleware
  Soda.client_middleware
end
push(*args) click to toggle source
# File lib/soda/client.rb, line 9
def push(*args)
  new.push(*args)
end

Public Instance Methods

push(item) click to toggle source
# File lib/soda/client.rb, line 18
def push(item)
  copy = normalize!(item)

  self.class.middleware.use(item["klass"], copy, copy["queue"]) do
    jid = copy["id"]
    jid.tap do
      queue = Soda.queue(copy["queue"])
      queue.push_in(copy["delay"], Soda.dump_json(copy))
    end
  end
end

Private Instance Methods

normalize!(item) click to toggle source
# File lib/soda/client.rb, line 32
def normalize!(item)
  item = DEFAULTS.merge(item)
  item.tap do
    item.keys.each do |key|
      item.merge!(String(key) => item.delete(key))
    end

    id      = SecureRandom.base64(10)
    klass   = item["klass"].to_s
    delay   = item["delay"].to_i
    queue   = item["queue"] || Soda.default_queue!.name

    # TODO: add validation
    #
    item.merge!(
      "id"    => id,
      "klass" => klass,
      "delay" => delay,
      "queue" => queue,
    )
  end
end