Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel 2020-05-11 09:12:13 +02:00
parent aea63436f7
commit 14f24b1839
No known key found for this signature in database
GPG Key ID: A061B9DDE0CA0773
5 changed files with 23 additions and 22 deletions

View File

@ -5,12 +5,12 @@ defmodule Mobilizon.GraphQL.Resolvers.Resource do
alias Mobilizon.{Actors, Resources, Users}
alias Mobilizon.Actors.Actor
alias Mobilizon.Federation.ActivityPub
alias Mobilizon.Resources.Resource
alias Mobilizon.Resources.Resource.Metadata
alias Mobilizon.Service.RichMedia.Parser
alias Mobilizon.Storage.Page
alias Mobilizon.Users.User
alias Mobilizon.Federation.ActivityPub
alias Mobilizon.Service.RichMedia.Parser
require Logger

View File

@ -139,7 +139,7 @@ defmodule Mobilizon.Config do
:enabled
]
def instance_resource_providers() do
def instance_resource_providers do
types = get_in(Application.get_env(:mobilizon, Mobilizon.Service.ResourceProviders), [:types])
providers =

View File

@ -2,11 +2,12 @@ defmodule Mobilizon.Resources do
@moduledoc """
The Resources context.
"""
alias Ecto.Adapters.SQL
alias Ecto.Multi
alias Mobilizon.Actors
alias Mobilizon.Actors.Actor
alias Mobilizon.Resources.Resource
alias Mobilizon.Storage.{Page, Repo}
alias Ecto.Multi
import Ecto.Query
require Logger
@ -172,7 +173,7 @@ defmodule Mobilizon.Resources do
["#{path}/#{title}/", actor_id, old_parent_id]}
end
Ecto.Adapters.SQL.query!(
SQL.query!(
repo,
query,
params

View File

@ -16,6 +16,7 @@ defmodule Mobilizon.Service.RichMedia.Parser do
alias Mobilizon.Config
alias Mobilizon.Service.RichMedia.Favicon
alias Plug.Conn.Utils
require Logger
defp parsers do
@ -26,23 +27,21 @@ defmodule Mobilizon.Service.RichMedia.Parser do
@spec parse(String.t()) :: {:ok, map()} | {:error, any()}
def parse(url) do
try do
case Cachex.fetch(:rich_media_cache, url, fn _ ->
case parse_url(url) do
{:ok, data} -> {:commit, data}
{:error, err} -> {:ignore, err}
end
end) do
{status, value} when status in [:ok, :commit] ->
{:ok, value}
case Cachex.fetch(:rich_media_cache, url, fn _ ->
case parse_url(url) do
{:ok, data} -> {:commit, data}
{:error, err} -> {:ignore, err}
end
end) do
{status, value} when status in [:ok, :commit] ->
{:ok, value}
{_, err} ->
{:error, err}
end
rescue
e ->
{:error, "Cachex error: #{inspect(e)}"}
{_, err} ->
{:error, err}
end
rescue
e ->
{:error, "Cachex error: #{inspect(e)}"}
end
@spec parse_url(String.t(), List.t()) :: {:ok, map()} | {:error, any()}
@ -154,7 +153,7 @@ defmodule Mobilizon.Service.RichMedia.Parser do
@spec parse_content_disposition(String.t()) :: String.t() | nil
defp parse_content_disposition(disposition) do
with [_, params] <- :binary.split(disposition, ";"),
%{"name" => _name} = params <- Plug.Conn.Utils.params(params) do
%{"name" => _name} = params <- Utils.params(params) do
handle_disposition(params)
else
_ -> nil

View File

@ -8,12 +8,13 @@ defmodule Mobilizon.Service.RichMedia.Parsers.OGP do
Module to parse OpenGraph data in HTML pages
"""
require Logger
alias Mobilizon.Service.RichMedia.Parsers.MetaTagsParser
def parse(html, data) do
Logger.debug("Using OpenGraph card parser")
with {:ok, data} <-
Mobilizon.Service.RichMedia.Parsers.MetaTagsParser.parse(
MetaTagsParser.parse(
html,
data,
"og",