diff options
| author | kaniini <nenolod@gmail.com> | 2019-01-17 03:19:55 +0000 | 
|---|---|---|
| committer | kaniini <nenolod@gmail.com> | 2019-01-17 03:19:55 +0000 | 
| commit | ce2efd1ee25d6e06c4bc5c0d97aad7b84c7c6874 (patch) | |
| tree | 7e2b60fb3be7407f756cd5e0a24660c6f2b18e65 /lib | |
| parent | 608cc65d43277016a22500771360598775a3df1e (diff) | |
| parent | 943324b66158d1bd2449894ec41bc544c56058a7 (diff) | |
| download | pleroma-ce2efd1ee25d6e06c4bc5c0d97aad7b84c7c6874.tar.gz pleroma-ce2efd1ee25d6e06c4bc5c0d97aad7b84c7c6874.zip | |
Merge branch 'resilient-user-view-2' into 'develop'
MastoAPI: Don't break on missing users.
See merge request pleroma/pleroma!675
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/pleroma/user.ex | 10 | ||||
| -rw-r--r-- | lib/pleroma/web/mastodon_api/views/status_view.ex | 19 | ||||
| -rw-r--r-- | lib/pleroma/web/twitter_api/views/activity_view.ex | 12 | 
3 files changed, 27 insertions, 14 deletions
| diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 681280539..a52e536d3 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -1040,4 +1040,14 @@ defmodule Pleroma.User do        @strict_local_nickname_regex      end    end + +  def error_user(ap_id) do +    %User{ +      name: ap_id, +      ap_id: ap_id, +      info: %User.Info{}, +      nickname: "erroruser@example.com", +      inserted_at: NaiveDateTime.utc_now() +    } +  end  end diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex index db543ffe5..7f5a52ea3 100644 --- a/lib/pleroma/web/mastodon_api/views/status_view.ex +++ b/lib/pleroma/web/mastodon_api/views/status_view.ex @@ -32,6 +32,19 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do      end)    end +  defp get_user(ap_id) do +    cond do +      user = User.get_cached_by_ap_id(ap_id) -> +        user + +      user = User.get_by_guessed_nickname(ap_id) -> +        user + +      true -> +        User.error_user(ap_id) +    end +  end +    def render("index.json", opts) do      replied_to_activities = get_replied_to_activities(opts.activities) @@ -48,7 +61,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do          "status.json",          %{activity: %{data: %{"type" => "Announce", "object" => object}} = activity} = opts        ) do -    user = User.get_cached_by_ap_id(activity.data["actor"]) +    user = get_user(activity.data["actor"])      created_at = Utils.to_masto_date(activity.data["published"])      reblogged = Activity.get_create_activity_by_object_ap_id(object) @@ -93,7 +106,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do    end    def render("status.json", %{activity: %{data: %{"object" => object}} = activity} = opts) do -    user = User.get_cached_by_ap_id(activity.data["actor"]) +    user = get_user(activity.data["actor"])      like_count = object["like_count"] || 0      announcement_count = object["announcement_count"] || 0 @@ -116,7 +129,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do      created_at = Utils.to_masto_date(object["published"])      reply_to = get_reply_to(activity, opts) -    reply_to_user = reply_to && User.get_cached_by_ap_id(reply_to.data["actor"]) +    reply_to_user = reply_to && get_user(reply_to.data["actor"])      content =        object diff --git a/lib/pleroma/web/twitter_api/views/activity_view.ex b/lib/pleroma/web/twitter_api/views/activity_view.ex index 108e7bfc5..03708d84c 100644 --- a/lib/pleroma/web/twitter_api/views/activity_view.ex +++ b/lib/pleroma/web/twitter_api/views/activity_view.ex @@ -101,20 +101,10 @@ defmodule Pleroma.Web.TwitterAPI.ActivityView do          user        true -> -        error_user(ap_id) +        User.error_user(ap_id)      end    end -  defp error_user(ap_id) do -    %User{ -      name: ap_id, -      ap_id: ap_id, -      info: %User.Info{}, -      nickname: "erroruser@example.com", -      inserted_at: NaiveDateTime.utc_now() -    } -  end -    def render("index.json", opts) do      context_ids = collect_context_ids(opts.activities)      users = collect_users(opts.activities) | 
