defmodule Nola.Plugins.Link.ImgDebridLink do @behaviour Nola.Plugins.Link @impl true def match(uri = %URI{host: "img.debrid-link.fr", path: path}, _opts) do case String.split(path, "/") do ["", ids] -> {true, %{id: ids}} _ -> false end end def match(_, _), do: false @impl true def post_match(_, _, _, _), do: false @impl true def expand(_uri, %{id: ids}, _opts) do with \ {:ok, %HTTPoison.Response{status_code: 200, body: body}} <- HTTPoison.get("https://img.debrid-link.fr/api/v1/images/#{ids}/infos", [], []), {:ok, %{"success" => true, "value" => values}} <- Jason.decode(body) do items = for %{"name" => name, "url" => %{"direct" => direct_url}} <- values do "#{name}: #{direct_url}" end {:ok, items} else _ -> :error end end end