Enqueue asciicast processing job from Elixir
parent
b94af03d58
commit
033744cf1f
@ -0,0 +1,10 @@
|
||||
defmodule Asciinema.Asciicasts.PosterGenerator do
|
||||
alias Asciinema.Asciicast
|
||||
|
||||
@doc "Generates poster for given asciicast"
|
||||
@callback generate(asciicast :: %Asciicast{}) :: :ok | {:error, term}
|
||||
|
||||
def generate(asciicast) do
|
||||
Application.get_env(:asciinema, :poster_generator).generate(asciicast)
|
||||
end
|
||||
end
|
@ -0,0 +1,5 @@
|
||||
defmodule Asciinema.Asciicasts.PosterGenerator.Noop do
|
||||
def generate(_asciicast) do
|
||||
:ok
|
||||
end
|
||||
end
|
@ -0,0 +1,8 @@
|
||||
defmodule Asciinema.Asciicasts.PosterGenerator.Sidekiq do
|
||||
alias Asciinema.Asciicast
|
||||
alias Asciinema.SidekiqClient
|
||||
|
||||
def generate(%Asciicast{id: id}) do
|
||||
SidekiqClient.enqueue("AsciicastWorker", [id])
|
||||
end
|
||||
end
|
@ -0,0 +1,14 @@
|
||||
defmodule Asciinema.SidekiqClient do
|
||||
def enqueue(class, args, queue \\ "default") do
|
||||
job = %{queue: queue,
|
||||
class: class,
|
||||
args: args,
|
||||
enqueued_at: Timex.now |> Timex.to_unix,
|
||||
jid: Crypto.random_token(24),
|
||||
retry: true}
|
||||
|
||||
payload = Poison.encode!(job)
|
||||
{:ok, _} = Redix.command(:redix, ["LPUSH", "queue:#{queue}", payload])
|
||||
:ok
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue