Fix credo style reports following it's update

Mainly transform `with` into `case`

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2019-07-23 18:06:22 +02:00
parent 1cd511f440
commit c3cca5d613
26 changed files with 303 additions and 248 deletions

View File

@@ -289,7 +289,7 @@ defmodule Mobilizon.Service.ActivityPub do
"to" => [actor.url <> "/followers", "https://www.w3.org/ns/activitystreams#Public"]
}
with Events.delete_event(event),
with {:ok, _} <- Events.delete_event(event),
{:ok, activity, _object} <- insert(data, local),
:ok <- maybe_federate(activity) do
{:ok, activity}
@@ -304,7 +304,7 @@ defmodule Mobilizon.Service.ActivityPub do
"to" => [actor.url <> "/followers", "https://www.w3.org/ns/activitystreams#Public"]
}
with Events.delete_comment(comment),
with {:ok, _} <- Events.delete_comment(comment),
{:ok, activity, _object} <- insert(data, local),
:ok <- maybe_federate(activity) do
{:ok, activity}
@@ -319,7 +319,7 @@ defmodule Mobilizon.Service.ActivityPub do
"to" => [url <> "/followers", "https://www.w3.org/ns/activitystreams#Public"]
}
with Actors.delete_actor(actor),
with {:ok, _} <- Actors.delete_actor(actor),
{:ok, activity, _object} <- insert(data, local),
:ok <- maybe_federate(activity) do
{:ok, activity}
@@ -352,9 +352,10 @@ defmodule Mobilizon.Service.ActivityPub do
"""
@spec make_actor_from_url(String.t(), boolean()) :: {:ok, %Actor{}} | {:error, any()}
def make_actor_from_url(url, preload \\ false) do
with {:ok, data} <- fetch_and_prepare_actor_from_url(url) do
Actors.insert_or_update_actor(data, preload)
else
case fetch_and_prepare_actor_from_url(url) do
{:ok, data} ->
Actors.insert_or_update_actor(data, preload)
# Request returned 410
{:error, :actor_deleted} ->
{:error, :actor_deleted}
@@ -371,10 +372,12 @@ defmodule Mobilizon.Service.ActivityPub do
"""
@spec find_or_make_actor_from_nickname(String.t(), atom() | nil) :: tuple()
def find_or_make_actor_from_nickname(nickname, type \\ nil) do
with %Actor{} = actor <- Actors.get_actor_by_name(nickname, type) do
{:ok, actor}
else
nil -> make_actor_from_nickname(nickname)
case Actors.get_actor_by_name(nickname, type) do
%Actor{} = actor ->
{:ok, actor}
nil ->
make_actor_from_nickname(nickname)
end
end
@@ -389,10 +392,12 @@ defmodule Mobilizon.Service.ActivityPub do
"""
@spec make_actor_from_nickname(String.t()) :: {:ok, %Actor{}} | {:error, any()}
def make_actor_from_nickname(nickname) do
with {:ok, %{"url" => url}} when not is_nil(url) <- WebFinger.finger(nickname) do
make_actor_from_url(url)
else
_e -> {:error, "No ActivityPub URL found in WebFinger"}
case WebFinger.finger(nickname) do
{:ok, %{"url" => url}} when not is_nil(url) ->
make_actor_from_url(url)
_e ->
{:error, "No ActivityPub URL found in WebFinger"}
end
end

View File

@@ -37,18 +37,22 @@ defmodule Mobilizon.Service.ActivityPub.Converters.Flag do
with {:ok, %Actor{} = reporter} <- Actors.get_actor_by_url(object["actor"]),
%Actor{} = reported <-
Enum.reduce_while(objects, nil, fn url, _ ->
with {:ok, %Actor{} = actor} <- Actors.get_actor_by_url(url) do
{:halt, actor}
else
_ -> {:cont, nil}
case Actors.get_actor_by_url(url) do
{:ok, %Actor{} = actor} ->
{:halt, actor}
_ ->
{:cont, nil}
end
end),
event <-
Enum.reduce_while(objects, nil, fn url, _ ->
with %Event{} = event <- Events.get_event_by_url(url) do
{:halt, event}
else
_ -> {:cont, nil}
case Events.get_event_by_url(url) do
%Event{} = event ->
{:halt, event}
_ ->
{:cont, nil}
end
end),

View File

@@ -209,19 +209,20 @@ defmodule Mobilizon.Service.ActivityPub.Transmogrifier do
data
)
when object_type in ["Person", "Application", "Service", "Organization"] do
with {:ok, %Actor{url: url}} <- Actors.get_actor_by_url(object["id"]) do
{:ok, new_actor_data} = ActivityPub.actor_data_from_actor_object(object)
case Actors.get_actor_by_url(object["id"]) do
{:ok, %Actor{url: url}} ->
{:ok, new_actor_data} = ActivityPub.actor_data_from_actor_object(object)
Actors.insert_or_update_actor(new_actor_data)
Actors.insert_or_update_actor(new_actor_data)
ActivityPub.update(%{
local: false,
to: data["to"] || [],
cc: data["cc"] || [],
object: object,
actor: url
})
ActivityPub.update(%{
local: false,
to: data["to"] || [],
cc: data["cc"] || [],
object: object,
actor: url
})
else
e ->
Logger.error(inspect(e))
:error

View File

@@ -206,10 +206,12 @@ defmodule Mobilizon.Service.ActivityPub.Utils do
Save picture data from %Plug.Upload{} and return AS Link data.
"""
def make_picture_data(%Plug.Upload{} = picture) do
with {:ok, picture} <- MobilizonWeb.Upload.store(picture) do
picture
else
_ -> nil
case MobilizonWeb.Upload.store(picture) do
{:ok, picture} ->
picture
_ ->
nil
end
end

View File

@@ -21,9 +21,10 @@ defmodule Mobilizon.Service.Export.Feed do
@spec create_cache(String.t()) :: {:commit, String.t()} | {:ignore, any()}
def create_cache("actor_" <> name) do
with {:ok, res} <- fetch_actor_event_feed(name) do
{:commit, res}
else
case fetch_actor_event_feed(name) do
{:ok, res} ->
{:commit, res}
err ->
{:ignore, err}
end
@@ -31,9 +32,10 @@ defmodule Mobilizon.Service.Export.Feed do
@spec create_cache(String.t()) :: {:commit, String.t()} | {:ignore, any()}
def create_cache("token_" <> token) do
with {:ok, res} <- fetch_events_from_token(token) do
{:commit, res}
else
case fetch_events_from_token(token) do
{:ok, res} ->
{:commit, res}
err ->
{:ignore, err}
end
@@ -99,21 +101,22 @@ defmodule Mobilizon.Service.Export.Feed do
defp get_entry(%Event{} = event) do
description = event.description || ""
with {:ok, html, []} <- Earmark.as_html(description) do
entry =
Entry.new(event.url, event.publish_at || event.inserted_at, event.title)
|> Entry.link(event.url, rel: "alternate", type: "text/html")
|> Entry.content({:cdata, html}, type: "html")
|> Entry.published(event.publish_at || event.inserted_at)
case Earmark.as_html(description) do
{:ok, html, []} ->
entry =
Entry.new(event.url, event.publish_at || event.inserted_at, event.title)
|> Entry.link(event.url, rel: "alternate", type: "text/html")
|> Entry.content({:cdata, html}, type: "html")
|> Entry.published(event.publish_at || event.inserted_at)
# Add tags
entry =
event.tags
|> Enum.uniq()
|> Enum.reduce(entry, fn tag, acc -> Entry.category(acc, tag.slug, label: tag.title) end)
# Add tags
entry =
event.tags
|> Enum.uniq()
|> Enum.reduce(entry, fn tag, acc -> Entry.category(acc, tag.slug, label: tag.title) end)
Entry.build(entry)
Entry.build(entry)
else
{:error, _html, error_messages} ->
Logger.error("Unable to produce HTML for Markdown", details: inspect(error_messages))
end

View File

@@ -87,9 +87,10 @@ defmodule Mobilizon.Service.Export.ICalendar do
Create cache for an actor
"""
def create_cache("token_" <> token) do
with {:ok, res} <- fetch_events_from_token(token) do
{:commit, res}
else
case fetch_events_from_token(token) do
{:ok, res} ->
{:commit, res}
err ->
{:ignore, err}
end

View File

@@ -51,8 +51,10 @@ defmodule Mobilizon.Service.Federator do
Logger.info("Handling incoming AP activity")
Logger.debug(inspect(params))
with {:ok, _activity} <- Transmogrifier.handle_incoming(params) do
else
case Transmogrifier.handle_incoming(params) do
{:ok, activity} ->
{:ok, activity}
%Activity{} ->
Logger.info("Already had #{params["id"]}")

View File

@@ -23,7 +23,7 @@ defmodule Mobilizon.Service.Geospatial.Addok do
with {:ok, %HTTPoison.Response{status_code: 200, body: body}} <-
HTTPoison.get(url),
{:ok, %{"features" => features}} <- Poison.decode(body) do
processData(features)
process_data(features)
end
end
@@ -39,7 +39,7 @@ defmodule Mobilizon.Service.Geospatial.Addok do
with {:ok, %HTTPoison.Response{status_code: 200, body: body}} <-
HTTPoison.get(url),
{:ok, %{"features" => features}} <- Poison.decode(body) do
processData(features)
process_data(features)
end
end
@@ -59,23 +59,23 @@ defmodule Mobilizon.Service.Geospatial.Addok do
end
end
defp processData(features) do
defp process_data(features) do
features
|> Enum.map(fn %{"geometry" => geometry, "properties" => properties} ->
%Address{
country: Map.get(properties, "country"),
locality: Map.get(properties, "city"),
region: Map.get(properties, "state"),
description: Map.get(properties, "name") || streetAddress(properties),
description: Map.get(properties, "name") || street_address(properties),
floor: Map.get(properties, "floor"),
geom: Map.get(geometry, "coordinates") |> Provider.coordinates(),
postal_code: Map.get(properties, "postcode"),
street: properties |> streetAddress()
street: properties |> street_address()
}
end)
end
defp streetAddress(properties) do
defp street_address(properties) do
if Map.has_key?(properties, "housenumber") do
Map.get(properties, "housenumber") <> " " <> Map.get(properties, "street")
else

View File

@@ -39,7 +39,7 @@ defmodule Mobilizon.Service.Geospatial.MapQuest do
},#{lon}&maxResults=#{limit}"
),
{:ok, %{"results" => results, "info" => %{"statuscode" => 0}}} <- Poison.decode(body) do
results |> Enum.map(&processData/1)
results |> Enum.map(&process_data/1)
else
{:ok, %HTTPoison.Response{status_code: 403, body: err}} ->
raise(ArgumentError, message: err)
@@ -71,14 +71,14 @@ defmodule Mobilizon.Service.Geospatial.MapQuest do
with {:ok, %HTTPoison.Response{status_code: 200, body: body}} <-
HTTPoison.get(url),
{:ok, %{"results" => results, "info" => %{"statuscode" => 0}}} <- Poison.decode(body) do
results |> Enum.map(&processData/1)
results |> Enum.map(&process_data/1)
else
{:ok, %HTTPoison.Response{status_code: 403, body: err}} ->
raise(ArgumentError, message: err)
end
end
defp processData(
defp process_data(
%{
"locations" => addresses,
"providedLocation" => %{"latLng" => %{"lat" => lat, "lng" => lng}}
@@ -86,22 +86,22 @@ defmodule Mobilizon.Service.Geospatial.MapQuest do
) do
case addresses do
[] -> nil
addresses -> addresses |> hd |> produceAddress(lat, lng)
addresses -> addresses |> hd |> produce_address(lat, lng)
end
end
defp processData(%{"locations" => addresses}) do
defp process_data(%{"locations" => addresses}) do
case addresses do
[] -> nil
addresses -> addresses |> hd |> produceAddress()
addresses -> addresses |> hd |> produce_address()
end
end
defp produceAddress(%{"latLng" => %{"lat" => lat, "lng" => lng}} = address) do
produceAddress(address, lat, lng)
defp produce_address(%{"latLng" => %{"lat" => lat, "lng" => lng}} = address) do
produce_address(address, lat, lng)
end
defp produceAddress(address, lat, lng) do
defp produce_address(address, lat, lng) do
%Address{
country: Map.get(address, "adminArea1"),
locality: Map.get(address, "adminArea5"),

View File

@@ -24,7 +24,7 @@ defmodule Mobilizon.Service.Geospatial.Photon do
with {:ok, %HTTPoison.Response{status_code: 200, body: body}} <-
HTTPoison.get(url),
{:ok, %{"features" => features}} <- Poison.decode(body) do
processData(features)
process_data(features)
end
end
@@ -40,7 +40,7 @@ defmodule Mobilizon.Service.Geospatial.Photon do
with {:ok, %HTTPoison.Response{status_code: 200, body: body}} <-
HTTPoison.get(url),
{:ok, %{"features" => features}} <- Poison.decode(body) do
processData(features)
process_data(features)
end
end
@@ -61,23 +61,23 @@ defmodule Mobilizon.Service.Geospatial.Photon do
end
end
defp processData(features) do
defp process_data(features) do
features
|> Enum.map(fn %{"geometry" => geometry, "properties" => properties} ->
%Address{
country: Map.get(properties, "country"),
locality: Map.get(properties, "city"),
region: Map.get(properties, "state"),
description: Map.get(properties, "name") || streetAddress(properties),
description: Map.get(properties, "name") || street_address(properties),
floor: Map.get(properties, "floor"),
geom: Map.get(geometry, "coordinates") |> Provider.coordinates(),
postal_code: Map.get(properties, "postcode"),
street: properties |> streetAddress()
street: properties |> street_address()
}
end)
end
defp streetAddress(properties) do
defp street_address(properties) do
if Map.has_key?(properties, "housenumber") do
Map.get(properties, "housenumber") <> " " <> Map.get(properties, "street")
else

View File

@@ -49,19 +49,19 @@ defmodule Mobilizon.Service.HTTPSignatures do
def validate_conn(conn) do
# TODO: How to get the right key and see if it is actually valid for that request.
# For now, fetch the key for the actor.
with {:ok, public_key} <- conn.params["actor"] |> Actor.get_public_key_for_url() do
if validate_conn(conn, public_key) do
true
else
Logger.info("Could not validate request, re-fetching user and trying one more time")
# Fetch user anew and try one more time
with actor_id <- conn.params["actor"],
{:ok, _actor} <- ActivityPub.make_actor_from_url(actor_id),
{:ok, public_key} <- actor_id |> Actor.get_public_key_for_url() do
validate_conn(conn, public_key)
case conn.params["actor"] |> Actor.get_public_key_for_url() do
{:ok, public_key} ->
if validate_conn(conn, public_key) do
true
Logger.info("Could not validate request, re-fetching user and trying one more time")
# Fetch user anew and try one more time
with actor_id <- conn.params["actor"],
{:ok, _actor} <- ActivityPub.make_actor_from_url(actor_id),
{:ok, public_key} <- actor_id |> Actor.get_public_key_for_url() do
validate_conn(conn, public_key)
end
end
end
else
e ->
Logger.debug("Could not found url for actor!")
Logger.debug(inspect(e))
@@ -104,9 +104,10 @@ defmodule Mobilizon.Service.HTTPSignatures do
end
def generate_date_header(date \\ Timex.now("GMT")) do
with {:ok, date} <- Timex.format(date, "%a, %d %b %Y %H:%M:%S %Z", :strftime) do
date
else
case Timex.format(date, "%a, %d %b %Y %H:%M:%S %Z", :strftime) do
{:ok, date} ->
date
{:error, err} ->
Logger.error("Unable to generate date header")
Logger.error(inspect(err))

View File

@@ -43,9 +43,10 @@ defmodule Mobilizon.Service.WebFinger do
{:ok, represent_actor(actor, "JSON")}
else
_e ->
with {:ok, %Actor{} = actor} when not is_nil(actor) <- Actors.get_actor_by_url(resource) do
{:ok, represent_actor(actor, "JSON")}
else
case Actors.get_actor_by_url(resource) do
{:ok, %Actor{} = actor} when not is_nil(actor) ->
{:ok, represent_actor(actor, "JSON")}
_e ->
{:error, "Couldn't find actor"}
end
@@ -94,9 +95,10 @@ defmodule Mobilizon.Service.WebFinger do
actor = String.trim_leading(actor, "@")
domain =
with [_name, domain] <- String.split(actor, "@") do
domain
else
case String.split(actor, "@") do
[_name, domain] ->
domain
_e ->
URI.parse(actor).host
end