Chat Schemas: Inline unimportant Schemas.

This commit is contained in:
lain 2020-04-27 12:45:59 +02:00
parent d2bbea1a80
commit 15ba3700af
3 changed files with 108 additions and 115 deletions

View File

@ -7,9 +7,8 @@ defmodule Pleroma.Web.ApiSpec.ChatOperation do
alias Pleroma.Web.ApiSpec.Helpers alias Pleroma.Web.ApiSpec.Helpers
alias Pleroma.Web.ApiSpec.Schemas.ChatMessageCreateRequest alias Pleroma.Web.ApiSpec.Schemas.ChatMessageCreateRequest
alias Pleroma.Web.ApiSpec.Schemas.ChatMessageResponse alias Pleroma.Web.ApiSpec.Schemas.ChatMessageResponse
alias Pleroma.Web.ApiSpec.Schemas.ChatMessagesResponse
alias Pleroma.Web.ApiSpec.Schemas.ChatResponse alias Pleroma.Web.ApiSpec.Schemas.ChatResponse
alias Pleroma.Web.ApiSpec.Schemas.ChatsResponse alias OpenApiSpex.Schema
@spec open_api_operation(atom) :: Operation.t() @spec open_api_operation(atom) :: Operation.t()
def open_api_operation(action) do def open_api_operation(action) do
@ -34,7 +33,11 @@ def create_operation do
], ],
responses: %{ responses: %{
200 => 200 =>
Operation.response("The created or existing chat", "application/json", ChatResponse) Operation.response(
"The created or existing chat",
"application/json",
ChatResponse
)
}, },
security: [ security: [
%{ %{
@ -55,7 +58,7 @@ def index_operation do
Operation.parameter(:max_id, :query, :string, "Return only chats before this id") Operation.parameter(:max_id, :query, :string, "Return only chats before this id")
], ],
responses: %{ 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: [ security: [
%{ %{
@ -78,7 +81,11 @@ def messages_operation do
], ],
responses: %{ responses: %{
200 => 200 =>
Operation.response("The messages in the chat", "application/json", ChatMessagesResponse) Operation.response(
"The messages in the chat",
"application/json",
chat_messages_response()
)
}, },
security: [ security: [
%{ %{
@ -112,4 +119,100 @@ def post_chat_message_operation do
] ]
} }
end 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 end

View File

@ -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

View File

@ -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