Get avatar and banner from AP users.
authorlain <lain@soykaf.club>
Thu, 22 Feb 2018 07:14:15 +0000 (08:14 +0100)
committerlain <lain@soykaf.club>
Thu, 22 Feb 2018 07:14:15 +0000 (08:14 +0100)
lib/pleroma/user.ex
lib/pleroma/web/activity_pub/activity_pub.ex
test/web/activity_pub/transmogrifier_test.exs

index f97dbb387020fb6690e3d57a38a01418c70e1e19..8c1c524ffff8f8a60cbb28f61278c74860f75943 100644 (file)
@@ -105,7 +105,7 @@ defmodule Pleroma.User do
 
   def upgrade_changeset(struct, params \\ %{}) do
     struct
-    |> cast(params, [:bio, :name, :info, :follower_address])
+    |> cast(params, [:bio, :name, :info, :follower_address, :avatar])
     |> unique_constraint(:nickname)
     |> validate_format(:nickname, ~r/^[a-zA-Z\d]+$/)
     |> validate_length(:bio, min: 1, max: 1000)
index 0de730410c642dd1669f9de56b14f6adf454bd44..d593460422121c3f42b0ced632157c476799e3c1 100644 (file)
@@ -264,15 +264,27 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
     with {:ok, %{status_code: 200, body: body}} <- @httpoison.get(ap_id, ["Accept": "application/activity+json"]),
     {:ok, data} <- Poison.decode(body)
       do
+      avatar = %{
+        "type" => "Image",
+        "url" => [%{"href" => data["icon"]["url"]}]
+      }
+
+      banner = %{
+        "type" => "Image",
+        "url" => [%{"href" => data["image"]["url"]}]
+      }
+
       user_data = %{
         ap_id: data["id"],
         info: %{
           "ap_enabled" => true,
-          "source_data" => data
+          "source_data" => data,
+          "banner" => banner
         },
+        avatar: avatar,
         nickname: "#{data["preferredUsername"]}@#{URI.parse(ap_id).host}",
         name: data["name"],
-        follower_address: data["followers"]
+        follower_address: data["followers"],
       }
 
       {:ok, user_data}
index 1857348527da6c97c8ee2b0dae2f1cb0047837a3..e3a170e4ef5ccfccb3b597a157b62c4c53ec7b0f 100644 (file)
@@ -204,6 +204,8 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do
 
       activity = Repo.get(Activity, activity.id)
       assert user.follower_address in activity.recipients
+      assert %{"url" => [%{"href" => "https://cdn.niu.moe/accounts/avatars/000/033/323/original/fd7f8ae0b3ffedc9.jpeg"}]} = user.avatar
+      assert %{"url" => [%{"href" => "https://cdn.niu.moe/accounts/headers/000/033/323/original/850b3448fa5fd477.png"}]} = user.info["banner"]
       refute "..." in activity.recipients
 
       unrelated_activity = Repo.get(Activity, unrelated_activity.id)