Current section
Files
Jump to
Current section
Files
lib/api.ex
defmodule Magic.API do
@moduledoc false
use Tesla
plug(Tesla.Middleware.BaseUrl, "https://api.magic.link")
plug(Tesla.Middleware.Headers, [
{"X-Magic-Secret-Key", Application.get_env(:magic_admin, :secret_key)}
])
plug(Tesla.Middleware.JSON)
def get_user(issuer) do
get("/v1/admin/auth/user/get", query: [issuer: issuer]) |> process_response()
end
def logout_user(issuer) do
post("/v2/admin/auth/user/logout", %{issuer: issuer}) |> process_response()
end
defp process_response({:ok, %Tesla.Env{body: %{"status" => "ok", "data" => data}}}) do
{:ok, data |> map_keys_to_atoms()}
end
defp process_response({:ok, %Tesla.Env{body: %{"status" => "failed", "message" => message}}}) do
{:error, message}
end
defp process_response(_) do
{:error, "error constructing request"}
end
defp map_keys_to_atoms(map) do
map |> Map.new(fn {k, v} -> {String.to_atom(k), v} end)
end
end