Merge branch 'develop' into 'remove-avatar-header'
authorSachin Joshi <satchin.joshi@gmail.com>
Sun, 23 Jun 2019 03:25:50 +0000 (03:25 +0000)
committerSachin Joshi <satchin.joshi@gmail.com>
Sun, 23 Jun 2019 03:25:50 +0000 (03:25 +0000)
# Conflicts:
#   CHANGELOG.md

1  2 
CHANGELOG.md
lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
lib/pleroma/web/router.ex
lib/pleroma/web/twitter_api/twitter_api_controller.ex
test/web/mastodon_api/mastodon_api_controller_test.exs
test/web/twitter_api/twitter_api_controller_test.exs

diff --cc CHANGELOG.md
index feacf2c5e570cf276dad58b0fbbbc905f66a4f41,0dc8b547d755bbefe05498c6e5028b01aafecd48..846d0102cfeb870b63529937300c54782b848c11
@@@ -45,7 -59,10 +59,11 @@@ The format is based on [Keep a Changelo
  - OAuth: added job to clean expired access tokens
  - MRF: Support for rejecting reports from specific instances (`mrf_simple`)
  - MRF: Support for stripping avatars and banner images from specific instances (`mrf_simple`)
 +- Ability to reset avatar, profile banner and backgroud
+ - MRF: Support for running subchains.
+ - Configuration: `skip_thread_containment` option
+ - Configuration: `rate_limit` option. See `Pleroma.Plugs.RateLimiter` documentation for details.
+ - MRF: Support for filtering out likely spam messages by rejecting posts from new users that contain links.
  
  ### Changed
  - **Breaking:** Configuration: move from Pleroma.Mailer to Pleroma.Emails.Mailer
index 1ff839e9e26a02bcb01db7a49e4b277bfed8d136,0c22790f27d739567f86d71e85a02fea7318ba03..d6aacd288d8914e37a86d6b8aa156077ba18c0f9
@@@ -152,71 -167,17 +167,80 @@@ defmodule Pleroma.Web.MastodonAPI.Masto
      end
    end
  
 +  def update_avatar(%{assigns: %{user: user}} = conn, %{"img" => ""}) do
 +    change = Changeset.change(user, %{avatar: nil})
 +    {:ok, user} = User.update_and_set_cache(change)
 +    CommonAPI.update(user)
 +
 +    json(conn, %{url: nil})
 +  end
 +
 +  def update_avatar(%{assigns: %{user: user}} = conn, params) do
 +    {:ok, object} = ActivityPub.upload(params, type: :avatar)
 +    change = Changeset.change(user, %{avatar: object.data})
 +    {:ok, user} = User.update_and_set_cache(change)
 +    CommonAPI.update(user)
 +    %{"url" => [%{"href" => href} | _]} = object.data
 +
 +    json(conn, %{url: href})
 +  end
 +
 +  def update_banner(%{assigns: %{user: user}} = conn, %{"banner" => ""}) do
 +    with new_info <- %{"banner" => %{}},
 +         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)
 +
 +      json(conn, %{url: nil})
 +    end
 +  end
 +
 +  def update_banner(%{assigns: %{user: user}} = conn, params) do
 +    with {:ok, object} <- ActivityPub.upload(%{"img" => params["banner"]}, type: :banner),
 +         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
 +
 +      json(conn, %{url: href})
 +    end
 +  end
 +
 +  def update_background(%{assigns: %{user: user}} = conn, %{"img" => ""}) do
 +    with new_info <- %{"background" => %{}},
 +         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
 +      json(conn, %{url: nil})
 +    end
 +  end
 +
 +  def update_background(%{assigns: %{user: user}} = conn, params) do
 +    with {:ok, object} <- ActivityPub.upload(params, type: :background),
 +         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
 +
 +      json(conn, %{url: href})
 +    end
 +  end
 +
    def verify_credentials(%{assigns: %{user: user}} = conn, _) do
-     account = AccountView.render("account.json", %{user: user, for: user})
+     chat_token = Phoenix.Token.sign(conn, "user socket", user.id)
+     account =
+       AccountView.render("account.json", %{
+         user: user,
+         for: user,
+         with_pleroma_settings: true,
+         with_chat_token: chat_token
+       })
      json(conn, account)
    end
  
Simple merge