TwitterAPI: Fix banner and background update.
authorlain <lain@soykaf.club>
Sat, 1 Dec 2018 11:00:53 +0000 (12:00 +0100)
committerlain <lain@soykaf.club>
Sat, 1 Dec 2018 11:01:22 +0000 (12:01 +0100)
lib/pleroma/user/info.ex
lib/pleroma/web/twitter_api/twitter_api_controller.ex
test/web/twitter_api/twitter_api_controller_test.exs

index 8a938e514243f3f30287d6895a7c2b5161b566a2..2846459340a3f94b80788a0c0e2a003259a4111f 100644 (file)
@@ -23,7 +23,18 @@ defmodule Pleroma.User.Info do
     field(:uri, :string, default: nil)
     field(:topic, :string, default: nil)
     field(:hub, :string, default: nil)
-    # topic, subject, salmon, subscribe_address, uri
+
+    # Found in the wild
+    # ap_id -> Where is this used?
+    # bio -> Where is this used?
+    # avatar -> Where is this used?
+    # fqn -> Where is this used?
+    # host -> Where is this used?
+    # name -> Where is this used?
+    # nickname -> Where is this used?
+    # salmon -> Where is this used?
+    # subject _> Where is this used?
+    # subscribe_address -> Where is this used?
   end
 
   def set_activation_status(info, deactivated) do
@@ -124,7 +135,8 @@ defmodule Pleroma.User.Info do
     |> cast(params, [
       :locked,
       :no_rich_text,
-      :default_scope
+      :default_scope,
+      :banner
     ])
   end
 
index 8f9d6c9050d064a90c2396c6645751e5d14509c1..ff644dd7983e312d96c8ef7d2270698ae30dfcc5 100644 (file)
@@ -300,9 +300,10 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
 
   def update_banner(%{assigns: %{user: user}} = conn, params) do
     with {:ok, object} <- ActivityPub.upload(%{"img" => params["banner"]}, type: :banner),
-         new_info <- Map.put(user.info, "banner", object.data),
-         change <- User.info_changeset(user, %{info: new_info}),
-         {:ok, user} <- User.update_and_set_cache(change) do
+         new_info <- %{"banner" => object.data},
+         info_cng <- User.Info.profile_update(user.info, new_info),
+         changeset <- Ecto.Changeset.change(user) |> Ecto.Changeset.put_embed(:info, info_cng),
+         {:ok, user} <- User.update_and_set_cache(changeset) do
       CommonAPI.update(user)
       %{"url" => [%{"href" => href} | _]} = object.data
       response = %{url: href} |> Jason.encode!()
@@ -314,9 +315,10 @@ defmodule Pleroma.Web.TwitterAPI.Controller do
 
   def update_background(%{assigns: %{user: user}} = conn, params) do
     with {:ok, object} <- ActivityPub.upload(params, type: :background),
-         new_info <- Map.put(user.info, "background", object.data),
-         change <- User.info_changeset(user, %{info: new_info}),
-         {:ok, _user} <- User.update_and_set_cache(change) do
+         new_info <- %{"background" => object.data},
+         info_cng <- User.Info.profile_update(user.info, new_info),
+         changeset <- Ecto.Changeset.change(user) |> Ecto.Changeset.put_embed(:info, info_cng),
+         {:ok, _user} <- User.update_and_set_cache(changeset) do
       %{"url" => [%{"href" => href} | _]} = object.data
       response = %{url: href} |> Jason.encode!()
 
index a76112e375f561eb659d59ba12acfc7ae998f276..f7c6e61873be28a834fadceb1e32d5fd4034ed32 100644 (file)
@@ -12,6 +12,36 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do
 
   import Pleroma.Factory
 
+  describe "POST /api/account/update_profile_banner" do
+    test "it updates the banner", %{conn: conn} do
+      user = insert(:user)
+
+      new_banner =
+        "data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7"
+
+      response =
+        conn
+        |> assign(:user, user)
+        |> post(authenticated_twitter_api__path(conn, :update_banner), %{"banner" => new_banner})
+        |> json_response(200)
+    end
+  end
+
+  describe "POST /api/qvitter/update_background_image" do
+    test "it updates the background", %{conn: conn} do
+      user = insert(:user)
+
+      new_bg =
+        "data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7"
+
+      response =
+        conn
+        |> assign(:user, user)
+        |> post(authenticated_twitter_api__path(conn, :update_background), %{"img" => new_bg})
+        |> json_response(200)
+    end
+  end
+
   describe "POST /api/account/verify_credentials" do
     setup [:valid_user]