summaryrefslogtreecommitdiff
path: root/internal/api/client/admin/domainallowcreate.go
blob: 756ded82971bbd7c5d8489d8e9d179581dc8fc64 (plain)
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
// 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 admin

import (
	"code.superseriousbusiness.org/gotosocial/internal/gtsmodel"
	"github.com/gin-gonic/gin"
)

// DomainAllowsPOSTHandler swagger:operation POST /api/v1/admin/domain_allows domainAllowCreate
//
// Create one or more domain allows, from a string or a file.
//
// You have two options when using this endpoint: either you can set `import` to `true` and
// upload a file containing multiple domain allows, JSON-formatted, or you can leave import as
// `false`, and just add one domain allow.
//
// The format of the json file should be something like: `[{"domain":"example.org"},{"domain":"whatever.com","public_comment":"they smell"}]`
//
//	---
//	tags:
//	- admin
//
//	consumes:
//	- multipart/form-data
//
//	produces:
//	- application/json
//
//	parameters:
//	-
//		name: import
//		in: query
//		description: >-
//			Signal that a list of domain allows is being imported as a file.
//			If set to `true`, then 'domains' must be present as a JSON-formatted file.
//			If set to `false`, then `domains` will be ignored, and `domain` must be present.
//		type: boolean
//		default: false
//	-
//		name: domains
//		in: formData
//		description: >-
//			JSON-formatted list of domain allows to import.
//			This is only used if `import` is set to `true`.
//		type: file
//	-
//		name: domain
//		in: formData
//		description: >-
//			Single domain to allow.
//			Used only if `import` is not `true`.
//		type: string
//	-
//		name: obfuscate
//		in: formData
//		description: >-
//			Obfuscate the name of the domain when serving it publicly.
//			Eg., `example.org` becomes something like `ex***e.org`.
//			Used only if `import` is not `true`.
//		type: boolean
//	-
//		name: public_comment
//		in: formData
//		description: >-
//			Public comment about this domain allow.
//			This will be displayed alongside the domain allow if you choose to share allows.
//			Used only if `import` is not `true`.
//		type: string
//	-
//		name: private_comment
//		in: formData
//		description: >-
//			Private comment about this domain allow. Will only be shown to other admins, so this
//			is a useful way of internally keeping track of why a certain domain ended up allowed.
//			Used only if `import` is not `true`.
//		type: string
//
//	security:
//	- OAuth2 Bearer:
//		- admin:write:domain_allows
//
//	responses:
//		'200':
//			description: >-
//				The newly created domain allow, if `import` != `true`.
//				If a list has been imported, then an `array` of newly created domain allows will be returned instead.
//			schema:
//				"$ref": "#/definitions/domainPermission"
//		'400':
//			schema:
//				"$ref": "#/definitions/error"
//			description: bad request
//		'401':
//			schema:
//				"$ref": "#/definitions/error"
//			description: unauthorized
//		'403':
//			schema:
//				"$ref": "#/definitions/error"
//			description: forbidden
//		'404':
//			schema:
//				"$ref": "#/definitions/error"
//			description: not found
//		'406':
//			schema:
//				"$ref": "#/definitions/error"
//			description: not acceptable
//		'409':
//			schema:
//				"$ref": "#/definitions/error"
//			description: >-
//				Conflict: There is already an admin action running that conflicts with this action.
//				Check the error message in the response body for more information. This is a temporary
//				error; it should be possible to process this action if you try again in a bit.
//		'500':
//			schema:
//				"$ref": "#/definitions/error"
//			description: internal server error
func (m *Module) DomainAllowsPOSTHandler(c *gin.Context) {
	m.createDomainPermissions(c,
		gtsmodel.DomainPermissionAllow,
		m.processor.Admin().DomainPermissionCreate,
		m.processor.Admin().DomainPermissionsImport,
	)
}