-
-
Notifications
You must be signed in to change notification settings - Fork 296
/
instance.go
148 lines (140 loc) · 5.76 KB
/
instance.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
// GoToSocial
// Copyright (C) GoToSocial Authors admin@gotosocial.org
// SPDX-License-Identifier: AGPL-3.0-or-later
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
package model
import "mime/multipart"
// InstanceSettingsUpdateRequest models an instance update request.
//
// swagger:ignore
type InstanceSettingsUpdateRequest struct {
// Title to use for the instance. Max 40 characters.
Title *string `form:"title" json:"title" xml:"title"`
// Username for the instance contact account. Must be the username of an existing admin.
ContactUsername *string `form:"contact_username" json:"contact_username" xml:"contact_username"`
// Email for reaching the instance administrator(s).
ContactEmail *string `form:"contact_email" json:"contact_email" xml:"contact_email"`
// Short description of the instance, max 500 chars. HTML formatting accepted.
ShortDescription *string `form:"short_description" json:"short_description" xml:"short_description"`
// Longer description of the instance, max 5,000 chars. HTML formatting accepted.
Description *string `form:"description" json:"description" xml:"description"`
// Terms and conditions of the instance, max 5,000 chars. HTML formatting accepted.
Terms *string `form:"terms" json:"terms" xml:"terms"`
// Image to use as the instance thumbnail.
Avatar *multipart.FileHeader `form:"thumbnail" json:"thumbnail" xml:"thumbnail"`
// Image description for the instance avatar.
AvatarDescription *string `form:"thumbnail_description" json:"thumbnail_description" xml:"thumbnail_description"`
// Image to use as the instance header.
Header *multipart.FileHeader `form:"header" json:"header" xml:"header"`
}
// InstanceConfigurationAccounts models instance account config parameters.
//
// swagger:model instanceConfigurationAccounts
type InstanceConfigurationAccounts struct {
// Whether or not accounts on this instance are allowed to upload custom CSS for profiles and statuses.
//
// example: false
AllowCustomCSS bool `json:"allow_custom_css"`
// The maximum number of featured tags allowed for each account.
// Currently not implemented, so this is hardcoded to 10.
MaxFeaturedTags int `json:"max_featured_tags"`
// The maximum number of profile fields allowed for each account.
// Currently not configurable, so this is hardcoded to 6. (https://github.com/superseriousbusiness/gotosocial/issues/1876)
MaxProfileFields int `json:"max_profile_fields"`
}
// InstanceConfigurationStatuses models instance status config parameters.
//
// swagger:model instanceConfigurationStatuses
type InstanceConfigurationStatuses struct {
// Maximum allowed length of a post on this instance, in characters.
//
// example: 5000
MaxCharacters int `json:"max_characters"`
// Max number of attachments allowed on a status.
//
// example: 4
MaxMediaAttachments int `json:"max_media_attachments"`
// Amount of characters clients should assume a url takes up.
//
// example: 25
CharactersReservedPerURL int `json:"characters_reserved_per_url"`
// List of mime types that it's possible to use for statuses on this instance.
//
// example: ["text/plain","text/markdown"]
SupportedMimeTypes []string `json:"supported_mime_types,omitempty"`
}
// InstanceConfigurationMediaAttachments models instance media attachment config parameters.
//
// swagger:model instanceConfigurationMediaAttachments
type InstanceConfigurationMediaAttachments struct {
// List of mime types that it's possible to upload to this instance.
//
// example: ["image/jpeg","image/gif"]
SupportedMimeTypes []string `json:"supported_mime_types"`
// Max allowed image size in bytes
//
// example: 2097152
ImageSizeLimit int `json:"image_size_limit"`
// Max allowed image size in pixels as height*width.
//
// GtS doesn't set a limit on this, but for compatibility
// we give Mastodon's 4096x4096px value here.
//
// example: 16777216
ImageMatrixLimit int `json:"image_matrix_limit"`
// Max allowed video size in bytes
//
// example: 10485760
VideoSizeLimit int `json:"video_size_limit"`
// Max allowed video frame rate.
//
// example: 60
VideoFrameRateLimit int `json:"video_frame_rate_limit"`
// Max allowed video size in pixels as height*width.
//
// GtS doesn't set a limit on this, but for compatibility
// we give Mastodon's 4096x4096px value here.
//
// example: 16777216
VideoMatrixLimit int `json:"video_matrix_limit"`
}
// InstanceConfigurationPolls models instance poll config parameters.
//
// swagger:model instanceConfigurationPolls
type InstanceConfigurationPolls struct {
// Number of options permitted in a poll on this instance.
//
// example: 4
MaxOptions int `json:"max_options"`
// Number of characters allowed per option in the poll.
//
// example: 50
MaxCharactersPerOption int `json:"max_characters_per_option"`
// Minimum expiration time of the poll in seconds.
//
// example: 300
MinExpiration int `json:"min_expiration"`
// Maximum expiration time of the poll in seconds.
//
// example: 2629746
MaxExpiration int `json:"max_expiration"`
}
// InstanceConfigurationEmojis models instance emoji config parameters.
type InstanceConfigurationEmojis struct {
// Max allowed emoji image size in bytes.
//
// example: 51200
EmojiSizeLimit int `json:"emoji_size_limit"`
}