Browse Source

Conversation: Add endpoint to get a conversation by id.

tags/v1.1.4
lain 4 years ago
parent
commit
60231ec7bd
4 changed files with 34 additions and 0 deletions
  1. +6
    -0
      docs/api/pleroma_api.md
  2. +9
    -0
      lib/pleroma/web/pleroma_api/pleroma_api_controller.ex
  3. +1
    -0
      lib/pleroma/web/router.ex
  4. +18
    -0
      test/web/pleroma_api/pleroma_api_controller_test.exs

+ 6
- 0
docs/api/pleroma_api.md View File

@@ -340,6 +340,12 @@ The status posting endpoint takes an additional parameter, `in_reply_to_conversa
* Params: Like other timelines
* Response: JSON, statuses (200 - healthy, 503 unhealthy).

## `GET /api/v1/pleroma/conversations/:id`
### The conversation with the given ID.
* Method `GET`
* Authentication: required
* Params: None
* Response: JSON, statuses (200 - healthy, 503 unhealthy).

## `PATCH /api/v1/pleroma/conversations/:id`
### Update a conversation. Used to change the set of recipients.


+ 9
- 0
lib/pleroma/web/pleroma_api/pleroma_api_controller.ex View File

@@ -13,6 +13,15 @@ defmodule Pleroma.Web.PleromaAPI.PleromaAPIController do
alias Pleroma.Web.MastodonAPI.ConversationView
alias Pleroma.Web.MastodonAPI.StatusView

def conversation(%{assigns: %{user: user}} = conn, %{"id" => participation_id}) do
with %Participation{} = participation <- Participation.get(participation_id),
true <- user.id == participation.user_id do
conn
|> put_view(ConversationView)
|> render("participation.json", %{participation: participation, user: user})
end
end

def conversation_statuses(
%{assigns: %{user: user}} = conn,
%{"id" => participation_id} = params


+ 1
- 0
lib/pleroma/web/router.ex View File

@@ -265,6 +265,7 @@ defmodule Pleroma.Web.Router do
scope [] do
pipe_through(:oauth_write)
get("/conversations/:id/statuses", PleromaAPIController, :conversation_statuses)
get("/conversations/:id", PleromaAPIController, :conversation)
patch("/conversations/:id", PleromaAPIController, :update_conversation)
end
end


+ 18
- 0
test/web/pleroma_api/pleroma_api_controller_test.exs View File

@@ -11,6 +11,24 @@ defmodule Pleroma.Web.PleromaAPI.PleromaAPIControllerTest do

import Pleroma.Factory

test "/api/v1/pleroma/conversations/:id", %{conn: conn} do
user = insert(:user)
other_user = insert(:user)

{:ok, _activity} =
CommonAPI.post(user, %{"status" => "Hi @#{other_user.nickname}!", "visibility" => "direct"})

[participation] = Participation.for_user(other_user)

result =
conn
|> assign(:user, other_user)
|> get("/api/v1/pleroma/conversations/#{participation.id}")
|> json_response(200)

assert result["id"] == participation.id |> to_string()
end

test "/api/v1/pleroma/conversations/:id/statuses", %{conn: conn} do
user = insert(:user)
other_user = insert(:user)


Loading…
Cancel
Save