Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F21968007
chat_operation.ex
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
6 KB
Referenced Files
None
Subscribers
None
chat_operation.ex
View Options
# 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
OpenApiSpex.Schema
alias
Pleroma.Web.ApiSpec.Helpers
alias
Pleroma.Web.ApiSpec.Schemas.ChatMessageCreateRequest
alias
Pleroma.Web.ApiSpec.Schemas.ChatMessageResponse
alias
Pleroma.Web.ApiSpec.Schemas.ChatResponse
@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
(
:id
,
:path
,
:string
,
"The account id of the recipient of this chat"
,
required
:
true
,
example
:
"someflakeid"
)
],
responses
:
%{
200
=>
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"
,
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"
,
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
:
[
%{
"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_id"
=>
"someflakeid"
},
%{
"actor_id"
=>
"someflakeid"
,
"content"
=>
"Whats' up?"
,
"id"
=>
"12"
,
"chat_id"
=>
"1"
,
"emojis"
=>
[],
"created_at"
=>
"2020-04-21T15:06:45.000Z"
}
]
}
end
end
File Metadata
Details
Attached
Mime Type
text/x-ruby
Expires
Sun, Dec 28, 3:24 AM (1 d, 20 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
844738
Default Alt Text
chat_operation.ex (6 KB)
Attached To
Mode
rPUBE pleroma-upstream
Attached
Detach File
Event Timeline
Log In to Comment