Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F85825320
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Authored By
Unknown
Size
11 KB
Referenced Files
None
Subscribers
None
View Options
diff --git a/lib/pleroma/web/api_spec/operations/chat_operation.ex b/lib/pleroma/web/api_spec/operations/chat_operation.ex
index dc99bd773..6f55cbd59 100644
--- a/lib/pleroma/web/api_spec/operations/chat_operation.ex
+++ b/lib/pleroma/web/api_spec/operations/chat_operation.ex
@@ -1,115 +1,218 @@
# Pleroma: A lightweight social networking server
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Web.ApiSpec.ChatOperation do
alias OpenApiSpex.Operation
alias Pleroma.Web.ApiSpec.Helpers
alias Pleroma.Web.ApiSpec.Schemas.ChatMessageCreateRequest
alias Pleroma.Web.ApiSpec.Schemas.ChatMessageResponse
- alias Pleroma.Web.ApiSpec.Schemas.ChatMessagesResponse
alias Pleroma.Web.ApiSpec.Schemas.ChatResponse
- alias Pleroma.Web.ApiSpec.Schemas.ChatsResponse
+ alias OpenApiSpex.Schema
@spec open_api_operation(atom) :: Operation.t()
def open_api_operation(action) do
operation = String.to_existing_atom("#{action}_operation")
apply(__MODULE__, operation, [])
end
def create_operation do
%Operation{
tags: ["chat"],
summary: "Create a chat",
operationId: "ChatController.create",
parameters: [
Operation.parameter(
:ap_id,
:path,
:string,
"The ActivityPub id of the recipient of this chat.",
required: true,
example: "https://lain.com/users/lain"
)
],
responses: %{
200 =>
- Operation.response("The created or existing chat", "application/json", ChatResponse)
+ Operation.response(
+ "The created or existing chat",
+ "application/json",
+ ChatResponse
+ )
},
security: [
%{
"oAuth" => ["write"]
}
]
}
end
def index_operation do
%Operation{
tags: ["chat"],
summary: "Get a list of chats that you participated in",
operationId: "ChatController.index",
parameters: [
Operation.parameter(:limit, :query, :integer, "How many results to return", example: 20),
Operation.parameter(:min_id, :query, :string, "Return only chats after this id"),
Operation.parameter(:max_id, :query, :string, "Return only chats before this id")
],
responses: %{
- 200 => Operation.response("The chats of the user", "application/json", ChatsResponse)
+ 200 => Operation.response("The chats of the user", "application/json", chats_response())
},
security: [
%{
"oAuth" => ["read"]
}
]
}
end
def messages_operation do
%Operation{
tags: ["chat"],
summary: "Get the most recent messages of the chat",
operationId: "ChatController.messages",
parameters: [
Operation.parameter(:id, :path, :string, "The ID of the Chat"),
Operation.parameter(:limit, :query, :integer, "How many results to return", example: 20),
Operation.parameter(:min_id, :query, :string, "Return only messages after this id"),
Operation.parameter(:max_id, :query, :string, "Return only messages before this id")
],
responses: %{
200 =>
- Operation.response("The messages in the chat", "application/json", ChatMessagesResponse)
+ Operation.response(
+ "The messages in the chat",
+ "application/json",
+ chat_messages_response()
+ )
},
security: [
%{
"oAuth" => ["read"]
}
]
}
end
def post_chat_message_operation do
%Operation{
tags: ["chat"],
summary: "Post a message to the chat",
operationId: "ChatController.post_chat_message",
parameters: [
Operation.parameter(:id, :path, :string, "The ID of the Chat")
],
requestBody: Helpers.request_body("Parameters", ChatMessageCreateRequest, required: true),
responses: %{
200 =>
Operation.response(
"The newly created ChatMessage",
"application/json",
ChatMessageResponse
)
},
security: [
%{
"oAuth" => ["write"]
}
]
}
end
+
+ def chats_response() do
+ %Schema{
+ title: "ChatsResponse",
+ description: "Response schema for multiple Chats",
+ type: :array,
+ items: ChatResponse,
+ example: [
+ %{
+ "recipient" => "https://dontbulling.me/users/lain",
+ "recipient_account" => %{
+ "pleroma" => %{
+ "is_admin" => false,
+ "confirmation_pending" => false,
+ "hide_followers_count" => false,
+ "is_moderator" => false,
+ "hide_favorites" => true,
+ "ap_id" => "https://dontbulling.me/users/lain",
+ "hide_follows_count" => false,
+ "hide_follows" => false,
+ "background_image" => nil,
+ "skip_thread_containment" => false,
+ "hide_followers" => false,
+ "relationship" => %{},
+ "tags" => []
+ },
+ "avatar" =>
+ "https://dontbulling.me/media/065a4dd3c6740dab13ff9c71ec7d240bb9f8be9205c9e7467fb2202117da1e32.jpg",
+ "following_count" => 0,
+ "header_static" => "https://originalpatchou.li/images/banner.png",
+ "source" => %{
+ "sensitive" => false,
+ "note" => "lain",
+ "pleroma" => %{
+ "discoverable" => false,
+ "actor_type" => "Person"
+ },
+ "fields" => []
+ },
+ "statuses_count" => 1,
+ "locked" => false,
+ "created_at" => "2020-04-16T13:40:15.000Z",
+ "display_name" => "lain",
+ "fields" => [],
+ "acct" => "lain@dontbulling.me",
+ "id" => "9u6Qw6TAZANpqokMkK",
+ "emojis" => [],
+ "avatar_static" =>
+ "https://dontbulling.me/media/065a4dd3c6740dab13ff9c71ec7d240bb9f8be9205c9e7467fb2202117da1e32.jpg",
+ "username" => "lain",
+ "followers_count" => 0,
+ "header" => "https://originalpatchou.li/images/banner.png",
+ "bot" => false,
+ "note" => "lain",
+ "url" => "https://dontbulling.me/users/lain"
+ },
+ "id" => "1",
+ "unread" => 2
+ }
+ ]
+ }
+ end
+
+ def chat_messages_response() do
+ %Schema{
+ title: "ChatMessagesResponse",
+ description: "Response schema for multiple ChatMessages",
+ type: :array,
+ items: ChatMessageResponse,
+ example: [
+ %{
+ "emojis" => [
+ %{
+ "static_url" => "https://dontbulling.me/emoji/Firefox.gif",
+ "visible_in_picker" => false,
+ "shortcode" => "firefox",
+ "url" => "https://dontbulling.me/emoji/Firefox.gif"
+ }
+ ],
+ "created_at" => "2020-04-21T15:11:46.000Z",
+ "content" => "Check this out :firefox:",
+ "id" => "13",
+ "chat_id" => "1",
+ "actor" => "https://dontbulling.me/users/lain"
+ },
+ %{
+ "actor" => "https://dontbulling.me/users/lain",
+ "content" => "Whats' up?",
+ "id" => "12",
+ "chat_id" => "1",
+ "emojis" => [],
+ "created_at" => "2020-04-21T15:06:45.000Z"
+ }
+ ]
+ }
+ end
end
diff --git a/lib/pleroma/web/api_spec/schemas/chat_messages_response.ex b/lib/pleroma/web/api_spec/schemas/chat_messages_response.ex
deleted file mode 100644
index 302bdec95..000000000
--- a/lib/pleroma/web/api_spec/schemas/chat_messages_response.ex
+++ /dev/null
@@ -1,41 +0,0 @@
-# Pleroma: A lightweight social networking server
-# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
-# SPDX-License-Identifier: AGPL-3.0-only
-
-defmodule Pleroma.Web.ApiSpec.Schemas.ChatMessagesResponse do
- alias Pleroma.Web.ApiSpec.Schemas.ChatMessageResponse
-
- require OpenApiSpex
-
- OpenApiSpex.schema(%{
- title: "ChatMessagesResponse",
- description: "Response schema for multiple ChatMessages",
- type: :array,
- items: ChatMessageResponse,
- example: [
- %{
- "emojis" => [
- %{
- "static_url" => "https://dontbulling.me/emoji/Firefox.gif",
- "visible_in_picker" => false,
- "shortcode" => "firefox",
- "url" => "https://dontbulling.me/emoji/Firefox.gif"
- }
- ],
- "created_at" => "2020-04-21T15:11:46.000Z",
- "content" => "Check this out :firefox:",
- "id" => "13",
- "chat_id" => "1",
- "actor" => "https://dontbulling.me/users/lain"
- },
- %{
- "actor" => "https://dontbulling.me/users/lain",
- "content" => "Whats' up?",
- "id" => "12",
- "chat_id" => "1",
- "emojis" => [],
- "created_at" => "2020-04-21T15:06:45.000Z"
- }
- ]
- })
-end
diff --git a/lib/pleroma/web/api_spec/schemas/chats_response.ex b/lib/pleroma/web/api_spec/schemas/chats_response.ex
deleted file mode 100644
index 3349e0691..000000000
--- a/lib/pleroma/web/api_spec/schemas/chats_response.ex
+++ /dev/null
@@ -1,69 +0,0 @@
-# Pleroma: A lightweight social networking server
-# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
-# SPDX-License-Identifier: AGPL-3.0-only
-
-defmodule Pleroma.Web.ApiSpec.Schemas.ChatsResponse do
- alias Pleroma.Web.ApiSpec.Schemas.ChatResponse
-
- require OpenApiSpex
-
- OpenApiSpex.schema(%{
- title: "ChatsResponse",
- description: "Response schema for multiple Chats",
- type: :array,
- items: ChatResponse,
- example: [
- %{
- "recipient" => "https://dontbulling.me/users/lain",
- "recipient_account" => %{
- "pleroma" => %{
- "is_admin" => false,
- "confirmation_pending" => false,
- "hide_followers_count" => false,
- "is_moderator" => false,
- "hide_favorites" => true,
- "ap_id" => "https://dontbulling.me/users/lain",
- "hide_follows_count" => false,
- "hide_follows" => false,
- "background_image" => nil,
- "skip_thread_containment" => false,
- "hide_followers" => false,
- "relationship" => %{},
- "tags" => []
- },
- "avatar" =>
- "https://dontbulling.me/media/065a4dd3c6740dab13ff9c71ec7d240bb9f8be9205c9e7467fb2202117da1e32.jpg",
- "following_count" => 0,
- "header_static" => "https://originalpatchou.li/images/banner.png",
- "source" => %{
- "sensitive" => false,
- "note" => "lain",
- "pleroma" => %{
- "discoverable" => false,
- "actor_type" => "Person"
- },
- "fields" => []
- },
- "statuses_count" => 1,
- "locked" => false,
- "created_at" => "2020-04-16T13:40:15.000Z",
- "display_name" => "lain",
- "fields" => [],
- "acct" => "lain@dontbulling.me",
- "id" => "9u6Qw6TAZANpqokMkK",
- "emojis" => [],
- "avatar_static" =>
- "https://dontbulling.me/media/065a4dd3c6740dab13ff9c71ec7d240bb9f8be9205c9e7467fb2202117da1e32.jpg",
- "username" => "lain",
- "followers_count" => 0,
- "header" => "https://originalpatchou.li/images/banner.png",
- "bot" => false,
- "note" => "lain",
- "url" => "https://dontbulling.me/users/lain"
- },
- "id" => "1",
- "unread" => 2
- }
- ]
- })
-end
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Fri, Oct 30, 12:04 AM (1 d, 15 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1798937
Default Alt Text
(11 KB)
Attached To
Mode
rPUBE pleroma-upstream
Attached
Detach File
Event Timeline