philomena/lib/philomena_proxy/scrapers/raw.ex

41 lines
945 B
Elixir
Raw Normal View History

defmodule PhilomenaProxy.Scrapers.Raw do
@moduledoc false
alias PhilomenaProxy.Scrapers.Scraper
alias PhilomenaProxy.Scrapers
@behaviour Scraper
2019-11-28 18:12:10 +01:00
@mime_types ["image/gif", "image/jpeg", "image/png", "image/svg", "image/svg+xml", "video/webm"]
@spec can_handle?(URI.t(), String.t()) :: boolean()
2019-11-28 18:12:10 +01:00
def can_handle?(_uri, url) do
PhilomenaProxy.Http.head(url)
2019-11-28 18:12:10 +01:00
|> case do
2020-09-10 05:12:54 +02:00
{:ok, %Tesla.Env{status: 200, headers: headers}} ->
2019-11-28 18:12:10 +01:00
headers
|> Enum.any?(fn {k, v} ->
String.downcase(k) == "content-type" and String.downcase(v) in @mime_types
end)
_ ->
false
end
end
@spec scrape(URI.t(), Scrapers.url()) :: Scrapers.scrape_result()
2019-11-28 18:12:10 +01:00
def scrape(_uri, url) do
%{
source_url: url,
author_name: "",
description: "",
2019-11-28 18:12:10 +01:00
images: [
%{
url: url,
camo_url: PhilomenaProxy.Camo.image_url(url)
2019-11-28 18:12:10 +01:00
}
]
}
end
2020-01-11 05:20:19 +01:00
end