Implement Credo software design suggestions

This commit is contained in:
rustra
2020-01-28 19:18:33 +01:00
parent a781c2d3e2
commit 97651e88e9
37 changed files with 146 additions and 97 deletions

View File

@@ -11,6 +11,8 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Actor do
alias Mobilizon.Federation.ActivityPub.Utils
alias Mobilizon.Federation.ActivityStream.{Converter, Convertible}
alias Mobilizon.Web.MediaProxy
@behaviour Converter
defimpl Convertible, for: ActorModel do
@@ -29,14 +31,14 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Actor do
data["icon"]["url"] &&
%{
"name" => data["icon"]["name"] || "avatar",
"url" => Mobilizon.Web.MediaProxy.url(data["icon"]["url"])
"url" => MediaProxy.url(data["icon"]["url"])
}
banner =
data["image"]["url"] &&
%{
"name" => data["image"]["name"] || "banner",
"url" => Mobilizon.Web.MediaProxy.url(data["image"]["url"])
"url" => MediaProxy.url(data["image"]["url"])
}
actor_data = %{

View File

@@ -6,8 +6,11 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Picture do
internal one, and back.
"""
alias Mobilizon.Media
alias Mobilizon.Media.Picture, as: PictureModel
alias Mobilizon.Web.Upload
@doc """
Convert a picture struct to an ActivityStream representation.
"""
@@ -34,9 +37,9 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Picture do
when is_bitstring(picture_url) do
with {:ok, %HTTPoison.Response{body: body}} <- HTTPoison.get(picture_url),
{:ok, %{name: name, url: url, content_type: content_type, size: size}} <-
Mobilizon.Web.Upload.store(%{body: body, name: name}),
{:picture_exists, nil} <- {:picture_exists, Mobilizon.Media.get_picture_by_url(url)} do
Mobilizon.Media.create_picture(%{
Upload.store(%{body: body, name: name}),
{:picture_exists, nil} <- {:picture_exists, Media.get_picture_by_url(url)} do
Media.create_picture(%{
"file" => %{
"url" => url,
"name" => name,

View File

@@ -11,6 +11,8 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Utils do
alias Mobilizon.Federation.ActivityPub
alias Mobilizon.Web.Endpoint
require Logger
@spec fetch_tags([String.t()]) :: [Tag.t()]
@@ -40,7 +42,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Utils do
def build_tags(tags) do
Enum.map(tags, fn %Tag{} = tag ->
%{
"href" => Mobilizon.Web.Endpoint.url() <> "/tags/#{tag.slug}",
"href" => Endpoint.url() <> "/tags/#{tag.slug}",
"name" => "##{tag.title}",
"type" => "Hashtag"
}
@@ -60,7 +62,7 @@ defmodule Mobilizon.Federation.ActivityStream.Converter.Utils do
defp build_mention(%Actor{} = actor) do
%{
"href" => actor.url,
"name" => "@#{Mobilizon.Actors.Actor.preferred_username_and_domain(actor)}",
"name" => "@#{Actor.preferred_username_and_domain(actor)}",
"type" => "Mention"
}
end