Merge branch 'feature/mastodon-api-for-tootstream' into 'develop'
authorlambda <pleromagit@rogerbraun.net>
Sun, 8 Apr 2018 06:02:11 +0000 (06:02 +0000)
committerlambda <pleromagit@rogerbraun.net>
Sun, 8 Apr 2018 06:02:11 +0000 (06:02 +0000)
mastodon api emulation improvements for tootstream

Closes #101

See merge request pleroma/pleroma!100

lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
lib/pleroma/web/router.ex

index f1cb6ec9dafd342fbe4d20625e720309540262a8..b00f1e15c1a58506e02f597fb4b821f7c9040410 100644 (file)
@@ -605,7 +605,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
               "video\/mp4"
             ]
           },
-          settings: %{
+          settings: Map.get(user.info, "settings") || %{
             onboarded: true,
             home: %{
               shows: %{
@@ -650,6 +650,18 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
     end
   end
 
+  def put_settings(%{assigns: %{user: user}} = conn, %{"data" => settings} = _params) do
+    with new_info <- Map.put(user.info, "settings", settings),
+         change <- User.info_changeset(user, %{info: new_info}),
+         {:ok, _user} <- User.update_and_set_cache(change) do
+      conn
+      |> json(%{})
+    else e ->
+        conn
+        |> json(%{error: inspect(e)})
+    end
+  end
+
   def login(conn, _) do
     conn
     |> render(MastodonView, "login.html", %{error: false})
index f240077843348c4d702a1d740d47400469c49997..8ee27e63c08b77c59fc9742b901d56ec08834a96 100644 (file)
@@ -121,6 +121,12 @@ defmodule Pleroma.Web.Router do
     post("/media", MastodonAPIController, :upload)
   end
 
+  scope "/api/web", Pleroma.Web.MastodonAPI do
+    pipe_through(:authenticated_api)
+
+    put("/settings", MastodonAPIController, :put_settings)
+  end
+
   scope "/api/v1", Pleroma.Web.MastodonAPI do
     pipe_through(:api)
     get("/instance", MastodonAPIController, :masto_instance)