Current section
Files
Jump to
Current section
Files
lib/download.ex
defmodule TENDER.DOWN do
require Record
require N2O
def start(login, pass, msg) do
spawn(fn ->
:n2o_pi.start(N2O.pi(module: __MODULE__, table: :tender, sup: TENDER,
state: {"local", login, pass, msg, true, []}, name: msg)) end)
end
def proc(:init, N2O.pi(state: {x, login, pass, msg_id, y, _})) do
bearer = :application.get_env(:n2o, :tender_bearer, [])
{:ok, {x, login, pass, msg_id, y, bearer}}
end
def proc(_,pi) do
{:noreply, pi}
end
def savePayload({status, id, body}) do
:filelib.ensure_dir("priv/download/")
case status do
{_,200,_} ->
file = "priv/download/" <> :erlang.list_to_binary(id)
:file.write_file(file, body, [:binary,:raw])
_ -> :skip
end
end
def saveSignatures({status, id, body}) do
case {status,body} do
{{_,200,_},[]} -> TENDER.warning 'DOWNLOAD SIGNATURE: empty for ~ts', [id]
{{_,200,_},signatures} ->
:lists.map(fn res ->
sid = :maps.get "id", res
sign = :maps.get("signature", res) |> :base64.decode
TENDER.debug 'DOWNLOAD SIGNATURE: ~ts', [sid]
file = "priv/download/" <> :erlang.list_to_binary(id) <> "-" <> sid <> ".p7s"
:file.write_file(file, sign, [:binary,:raw])
end, signatures)
_ -> :skip
end
end
end