2020-05-18 20:00:32 +02:00
# Pleroma: A lightweight social networking server
2021-01-13 07:49:20 +01:00
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
2020-05-18 20:00:32 +02:00
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Web.ApiSpec.PleromaMascotOperation do
alias OpenApiSpex.Operation
alias OpenApiSpex.Schema
alias Pleroma.Web.ApiSpec.Schemas.ApiError
import Pleroma.Web.ApiSpec.Helpers
def open_api_operation ( action ) do
operation = String . to_existing_atom ( " #{ action } _operation " )
apply ( __MODULE__ , operation , [ ] )
end
def show_operation do
% Operation {
tags : [ " Mascot " ] ,
summary : " Gets user mascot image " ,
security : [ %{ " oAuth " = > [ " read:accounts " ] } ] ,
operationId : " PleromaAPI.MascotController.show " ,
responses : %{
200 = > Operation . response ( " Mascot " , " application/json " , mascot ( ) )
}
}
end
def update_operation do
% Operation {
tags : [ " Mascot " ] ,
summary : " Set/clear user avatar image " ,
description :
" Behaves exactly the same as `POST /api/v1/upload`. Can only accept images - any attempt to upload non-image files will be met with `HTTP 415 Unsupported Media Type`. " ,
operationId : " PleromaAPI.MascotController.update " ,
requestBody :
request_body (
" Parameters " ,
% Schema {
type : :object ,
properties : %{
file : % Schema { type : :string , format : :binary }
}
} ,
required : true
) ,
security : [ %{ " oAuth " = > [ " write:accounts " ] } ] ,
responses : %{
200 = > Operation . response ( " Mascot " , " application/json " , mascot ( ) ) ,
415 = > Operation . response ( " Unsupported Media Type " , " application/json " , ApiError )
}
}
end
defp mascot do
% Schema {
type : :object ,
properties : %{
id : % Schema { type : :string } ,
url : % Schema { type : :string , format : :uri } ,
type : % Schema { type : :string } ,
pleroma : % Schema {
type : :object ,
properties : %{
mime_type : % Schema { type : :string }
}
}
} ,
example : %{
" id " = > " abcdefg " ,
" url " = > " https://pleroma.example.org/media/abcdefg.png " ,
" type " = > " image " ,
" pleroma " = > %{
" mime_type " = > " image/png "
}
}
}
end
end