parent
aea63436f7
commit
14f24b1839
|
@ -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
|
||||
|
||||
|
|
|
@ -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 =
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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",
|
||||
|
|
Loading…
Reference in New Issue