diff options
| author | lambda <lain@soykaf.club> | 2019-05-01 10:41:00 +0000 | 
|---|---|---|
| committer | lambda <lain@soykaf.club> | 2019-05-01 10:41:00 +0000 | 
| commit | 297596ce4800bed3e6b85721ec384a2a0a0a983f (patch) | |
| tree | a9ad05e1066d83285fe0be92c88d52609d99fc98 /lib | |
| parent | a7c9e3b2428823a2d6a7f68d92d0acecd3ad947b (diff) | |
| parent | f11e7037c21d611cddd7f2eab64ebfc39630a078 (diff) | |
| download | pleroma-297596ce4800bed3e6b85721ec384a2a0a0a983f.tar.gz pleroma-297596ce4800bed3e6b85721ec384a2a0a0a983f.zip  | |
Merge branch 'harmonize_return_types_in_user_module' into 'develop'
Harmonize return types in user module
Closes #718
See merge request pleroma/pleroma!1112
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/mix/tasks/pleroma/user.ex | 2 | ||||
| -rw-r--r-- | lib/pleroma/user.ex | 34 | ||||
| -rw-r--r-- | lib/pleroma/web/activity_pub/activity_pub_controller.ex | 2 | ||||
| -rw-r--r-- | lib/pleroma/web/activity_pub/relay.ex | 4 | ||||
| -rw-r--r-- | lib/pleroma/web/activity_pub/transmogrifier.ex | 26 | ||||
| -rw-r--r-- | lib/pleroma/web/mastodon_api/mastodon_api_controller.ex | 2 | ||||
| -rw-r--r-- | lib/pleroma/web/twitter_api/twitter_api.ex | 2 | 
7 files changed, 40 insertions, 32 deletions
diff --git a/lib/mix/tasks/pleroma/user.ex b/lib/mix/tasks/pleroma/user.ex index b396ff0de..9e2523b18 100644 --- a/lib/mix/tasks/pleroma/user.ex +++ b/lib/mix/tasks/pleroma/user.ex @@ -126,7 +126,7 @@ defmodule Mix.Tasks.Pleroma.User do      proceed? = assume_yes? or Mix.shell().yes?("Continue?") -    unless not proceed? do +    if proceed? do        Common.start_pleroma()        params = %{ diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index c5b1ddc5d..1c62f238e 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -423,7 +423,7 @@ defmodule Pleroma.User do      Enum.map(        followed_identifiers,        fn followed_identifier -> -        with %User{} = followed <- get_or_fetch(followed_identifier), +        with {:ok, %User{} = followed} <- get_or_fetch(followed_identifier),               {:ok, follower} <- maybe_direct_follow(follower, followed),               {:ok, _} <- ActivityPub.follow(follower, followed) do            followed @@ -507,7 +507,15 @@ defmodule Pleroma.User do    def get_cached_by_nickname(nickname) do      key = "nickname:#{nickname}" -    Cachex.fetch!(:user_cache, key, fn _ -> get_or_fetch_by_nickname(nickname) end) + +    Cachex.fetch!(:user_cache, key, fn -> +      user_result = get_or_fetch_by_nickname(nickname) + +      case user_result do +        {:ok, user} -> {:commit, user} +        {:error, _error} -> {:ignore, nil} +      end +    end)    end    def get_cached_by_nickname_or_id(nickname_or_id) do @@ -543,7 +551,7 @@ defmodule Pleroma.User do    def get_or_fetch_by_nickname(nickname) do      with %User{} = user <- get_by_nickname(nickname) do -      user +      {:ok, user}      else        _e ->          with [_nick, _domain] <- String.split(nickname, "@"), @@ -553,9 +561,9 @@ defmodule Pleroma.User do              {:ok, _} = Task.start(__MODULE__, :fetch_initial_posts, [user])            end -          user +          {:ok, user}          else -          _e -> nil +          _e -> {:error, "not found " <> nickname}          end      end    end @@ -902,7 +910,7 @@ defmodule Pleroma.User do      Enum.map(        blocked_identifiers,        fn blocked_identifier -> -        with %User{} = blocked <- get_or_fetch(blocked_identifier), +        with {:ok, %User{} = blocked} <- get_or_fetch(blocked_identifier),               {:ok, blocker} <- block(blocker, blocked),               {:ok, _} <- ActivityPub.block(blocker, blocked) do            blocked @@ -1202,11 +1210,11 @@ defmodule Pleroma.User do      case ap_try do        {:ok, user} -> -        user +        {:ok, user}        _ ->          case OStatus.make_user(ap_id) do -          {:ok, user} -> user +          {:ok, user} -> {:ok, user}            _ -> {:error, "Could not fetch by AP id"}          end      end @@ -1216,20 +1224,20 @@ defmodule Pleroma.User do      user = get_cached_by_ap_id(ap_id)      if !is_nil(user) and !User.needs_update?(user) do -      user +      {:ok, user}      else        # Whether to fetch initial posts for the user (if it's a new user & the fetching is enabled)        should_fetch_initial = is_nil(user) and Pleroma.Config.get([:fetch_initial_posts, :enabled]) -      user = fetch_by_ap_id(ap_id) +      resp = fetch_by_ap_id(ap_id)        if should_fetch_initial do -        with %User{} = user do +        with {:ok, %User{} = user} = resp do            {:ok, _} = Task.start(__MODULE__, :fetch_initial_posts, [user])          end        end -      user +      resp      end    end @@ -1271,7 +1279,7 @@ defmodule Pleroma.User do    end    def get_public_key_for_ap_id(ap_id) do -    with %User{} = user <- get_or_fetch_by_ap_id(ap_id), +    with {:ok, %User{} = user} <- get_or_fetch_by_ap_id(ap_id),           {:ok, public_key} <- public_key_from_info(user.info) do        {:ok, public_key}      else diff --git a/lib/pleroma/web/activity_pub/activity_pub_controller.ex b/lib/pleroma/web/activity_pub/activity_pub_controller.ex index 0b80566bf..c967ab7a9 100644 --- a/lib/pleroma/web/activity_pub/activity_pub_controller.ex +++ b/lib/pleroma/web/activity_pub/activity_pub_controller.ex @@ -155,7 +155,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do    def inbox(%{assigns: %{valid_signature: true}} = conn, %{"nickname" => nickname} = params) do      with %User{} = recipient <- User.get_cached_by_nickname(nickname), -         %User{} = actor <- User.get_or_fetch_by_ap_id(params["actor"]), +         {:ok, %User{} = actor} <- User.get_or_fetch_by_ap_id(params["actor"]),           true <- Utils.recipient_in_message(recipient, actor, params),           params <- Utils.maybe_splice_recipient(recipient.ap_id, params) do        Federator.incoming_ap_doc(params) diff --git a/lib/pleroma/web/activity_pub/relay.ex b/lib/pleroma/web/activity_pub/relay.ex index a7a20ca37..93808517b 100644 --- a/lib/pleroma/web/activity_pub/relay.ex +++ b/lib/pleroma/web/activity_pub/relay.ex @@ -15,7 +15,7 @@ defmodule Pleroma.Web.ActivityPub.Relay do    def follow(target_instance) do      with %User{} = local_user <- get_actor(), -         %User{} = target_user <- User.get_or_fetch_by_ap_id(target_instance), +         {:ok, %User{} = target_user} <- User.get_or_fetch_by_ap_id(target_instance),           {:ok, activity} <- ActivityPub.follow(local_user, target_user) do        Logger.info("relay: followed instance: #{target_instance}; id=#{activity.data["id"]}")        {:ok, activity} @@ -28,7 +28,7 @@ defmodule Pleroma.Web.ActivityPub.Relay do    def unfollow(target_instance) do      with %User{} = local_user <- get_actor(), -         %User{} = target_user <- User.get_or_fetch_by_ap_id(target_instance), +         {:ok, %User{} = target_user} <- User.get_or_fetch_by_ap_id(target_instance),           {:ok, activity} <- ActivityPub.unfollow(local_user, target_user) do        Logger.info("relay: unfollowed instance: #{target_instance}: id=#{activity.data["id"]}")        {:ok, activity} diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index b1e859d7c..b774c2afa 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -126,7 +126,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do    def fix_implicit_addressing(object, _), do: object    def fix_addressing(object) do -    %User{} = user = User.get_or_fetch_by_ap_id(object["actor"]) +    {:ok, %User{} = user} = User.get_or_fetch_by_ap_id(object["actor"])      followers_collection = User.ap_followers(user)      object @@ -407,7 +407,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do        |> fix_addressing      with nil <- Activity.get_create_by_object_ap_id(object["id"]), -         %User{} = user <- User.get_or_fetch_by_ap_id(data["actor"]) do +         {:ok, %User{} = user} <- User.get_or_fetch_by_ap_id(data["actor"]) do        object = fix_object(data["object"])        params = %{ @@ -436,7 +436,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do          %{"type" => "Follow", "object" => followed, "actor" => follower, "id" => id} = data        ) do      with %User{local: true} = followed <- User.get_cached_by_ap_id(followed), -         %User{} = follower <- User.get_or_fetch_by_ap_id(follower), +         {:ok, %User{} = follower} <- User.get_or_fetch_by_ap_id(follower),           {:ok, activity} <- ActivityPub.follow(follower, followed, id, false) do        with deny_follow_blocked <- Pleroma.Config.get([:user, :deny_follow_blocked]),             {:user_blocked, false} <- @@ -485,7 +485,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do          %{"type" => "Accept", "object" => follow_object, "actor" => _actor, "id" => _id} = data        ) do      with actor <- Containment.get_actor(data), -         %User{} = followed <- User.get_or_fetch_by_ap_id(actor), +         {:ok, %User{} = followed} <- User.get_or_fetch_by_ap_id(actor),           {:ok, follow_activity} <- get_follow_activity(follow_object, followed),           {:ok, follow_activity} <- Utils.update_follow_state(follow_activity, "accept"),           %User{local: true} = follower <- User.get_cached_by_ap_id(follow_activity.data["actor"]), @@ -511,7 +511,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do          %{"type" => "Reject", "object" => follow_object, "actor" => _actor, "id" => _id} = data        ) do      with actor <- Containment.get_actor(data), -         %User{} = followed <- User.get_or_fetch_by_ap_id(actor), +         {:ok, %User{} = followed} <- User.get_or_fetch_by_ap_id(actor),           {:ok, follow_activity} <- get_follow_activity(follow_object, followed),           {:ok, follow_activity} <- Utils.update_follow_state(follow_activity, "reject"),           %User{local: true} = follower <- User.get_cached_by_ap_id(follow_activity.data["actor"]), @@ -535,7 +535,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do          %{"type" => "Like", "object" => object_id, "actor" => _actor, "id" => id} = data        ) do      with actor <- Containment.get_actor(data), -         %User{} = actor <- User.get_or_fetch_by_ap_id(actor), +         {:ok, %User{} = actor} <- User.get_or_fetch_by_ap_id(actor),           {:ok, object} <- get_obj_helper(object_id),           {:ok, activity, _object} <- ActivityPub.like(actor, object, id, false) do        {:ok, activity} @@ -548,7 +548,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do          %{"type" => "Announce", "object" => object_id, "actor" => _actor, "id" => id} = data        ) do      with actor <- Containment.get_actor(data), -         %User{} = actor <- User.get_or_fetch_by_ap_id(actor), +         {:ok, %User{} = actor} <- User.get_or_fetch_by_ap_id(actor),           {:ok, object} <- get_obj_helper(object_id),           public <- Visibility.is_public?(data),           {:ok, activity, _object} <- ActivityPub.announce(actor, object, id, false, public) do @@ -603,7 +603,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do      object_id = Utils.get_ap_id(object_id)      with actor <- Containment.get_actor(data), -         %User{} = actor <- User.get_or_fetch_by_ap_id(actor), +         {:ok, %User{} = actor} <- User.get_or_fetch_by_ap_id(actor),           {:ok, object} <- get_obj_helper(object_id),           :ok <- Containment.contain_origin(actor.ap_id, object.data),           {:ok, activity} <- ActivityPub.delete(object, false) do @@ -622,7 +622,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do          } = data        ) do      with actor <- Containment.get_actor(data), -         %User{} = actor <- User.get_or_fetch_by_ap_id(actor), +         {:ok, %User{} = actor} <- User.get_or_fetch_by_ap_id(actor),           {:ok, object} <- get_obj_helper(object_id),           {:ok, activity, _} <- ActivityPub.unannounce(actor, object, id, false) do        {:ok, activity} @@ -640,7 +640,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do          } = _data        ) do      with %User{local: true} = followed <- User.get_cached_by_ap_id(followed), -         %User{} = follower <- User.get_or_fetch_by_ap_id(follower), +         {:ok, %User{} = follower} <- User.get_or_fetch_by_ap_id(follower),           {:ok, activity} <- ActivityPub.unfollow(follower, followed, id, false) do        User.unfollow(follower, followed)        {:ok, activity} @@ -659,7 +659,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do        ) do      with true <- Pleroma.Config.get([:activitypub, :accept_blocks]),           %User{local: true} = blocked <- User.get_cached_by_ap_id(blocked), -         %User{} = blocker <- User.get_or_fetch_by_ap_id(blocker), +         {:ok, %User{} = blocker} <- User.get_or_fetch_by_ap_id(blocker),           {:ok, activity} <- ActivityPub.unblock(blocker, blocked, id, false) do        User.unblock(blocker, blocked)        {:ok, activity} @@ -673,7 +673,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do        ) do      with true <- Pleroma.Config.get([:activitypub, :accept_blocks]),           %User{local: true} = blocked = User.get_cached_by_ap_id(blocked), -         %User{} = blocker = User.get_or_fetch_by_ap_id(blocker), +         {:ok, %User{} = blocker} = User.get_or_fetch_by_ap_id(blocker),           {:ok, activity} <- ActivityPub.block(blocker, blocked, id, false) do        User.unfollow(blocker, blocked)        User.block(blocker, blocked) @@ -692,7 +692,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do          } = data        ) do      with actor <- Containment.get_actor(data), -         %User{} = actor <- User.get_or_fetch_by_ap_id(actor), +         {:ok, %User{} = actor} <- User.get_or_fetch_by_ap_id(actor),           {:ok, object} <- get_obj_helper(object_id),           {:ok, activity, _, _} <- ActivityPub.unlike(actor, object, id, false) do        {:ok, activity} diff --git a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex index 811a45c79..ed585098a 100644 --- a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex @@ -1653,7 +1653,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do                x,                "id",                case User.get_or_fetch(x["acct"]) do -                %{id: id} -> id +                {:ok, %User{id: id}} -> id                  _ -> 0                end              ) diff --git a/lib/pleroma/web/twitter_api/twitter_api.ex b/lib/pleroma/web/twitter_api/twitter_api.ex index adeac6f3c..3a7774647 100644 --- a/lib/pleroma/web/twitter_api/twitter_api.ex +++ b/lib/pleroma/web/twitter_api/twitter_api.ex @@ -293,7 +293,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do    end    def get_external_profile(for_user, uri) do -    with %User{} = user <- User.get_or_fetch(uri) do +    with {:ok, %User{} = user} <- User.get_or_fetch(uri) do        {:ok, UserView.render("show.json", %{user: user, for: for_user})}      else        _e ->  | 
