aboutsummaryrefslogtreecommitdiffhomepage
path: root/shared/extra-utils/users/blocklist-command.ts
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2021-07-07 16:02:46 +0200
committerChocobozzz <me@florianbigard.com>2021-07-20 15:27:17 +0200
commit5f8bd4cbb178290da7d8f81e996f19f0eccc8e4c (patch)
tree02d056121540652b0867fc2ef56699138afe6271 /shared/extra-utils/users/blocklist-command.ts
parent9fff08cf83f34339df7ed4ac770e1dee536adf9d (diff)
downloadPeerTube-5f8bd4cbb178290da7d8f81e996f19f0eccc8e4c.tar.gz
PeerTube-5f8bd4cbb178290da7d8f81e996f19f0eccc8e4c.tar.zst
PeerTube-5f8bd4cbb178290da7d8f81e996f19f0eccc8e4c.zip
Introduce blocklist command
Diffstat (limited to 'shared/extra-utils/users/blocklist-command.ts')
-rw-r--r--shared/extra-utils/users/blocklist-command.ts135
1 files changed, 135 insertions, 0 deletions
diff --git a/shared/extra-utils/users/blocklist-command.ts b/shared/extra-utils/users/blocklist-command.ts
new file mode 100644
index 000000000..96afdc3fd
--- /dev/null
+++ b/shared/extra-utils/users/blocklist-command.ts
@@ -0,0 +1,135 @@
1/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
2
3import { HttpStatusCode } from '@shared/core-utils'
4import { AccountBlock, ResultList, ServerBlock } from '@shared/models'
5import { AbstractCommand, OverrideCommandOptions } from '../shared'
6
7type ListBlocklistOptions = OverrideCommandOptions & {
8 start: number
9 count: number
10 sort: string // default -createdAt
11}
12
13export class BlocklistCommand extends AbstractCommand {
14
15 listMyAccountBlocklist (options: ListBlocklistOptions) {
16 const path = '/api/v1/users/me/blocklist/accounts'
17
18 return this.listBlocklist<AccountBlock>(options, path)
19 }
20
21 listMyServerBlocklist (options: ListBlocklistOptions) {
22 const path = '/api/v1/users/me/blocklist/servers'
23
24 return this.listBlocklist<ServerBlock>(options, path)
25 }
26
27 listServerAccountBlocklist (options: ListBlocklistOptions) {
28 const path = '/api/v1/server/blocklist/accounts'
29
30 return this.listBlocklist<AccountBlock>(options, path)
31 }
32
33 listServerServerBlocklist (options: ListBlocklistOptions) {
34 const path = '/api/v1/server/blocklist/servers'
35
36 return this.listBlocklist<ServerBlock>(options, path)
37 }
38
39 // ---------------------------------------------------------------------------
40
41 addToMyBlocklist (options: OverrideCommandOptions & {
42 account?: string
43 server?: string
44 }) {
45 const { account, server } = options
46
47 const path = account
48 ? '/api/v1/users/me/blocklist/accounts'
49 : '/api/v1/users/me/blocklist/servers'
50
51 return this.postBodyRequest({
52 ...options,
53
54 path,
55 fields: {
56 accountName: account,
57 host: server
58 },
59 defaultExpectedStatus: HttpStatusCode.NO_CONTENT_204
60 })
61 }
62
63 addToServerBlocklist (options: OverrideCommandOptions & {
64 account?: string
65 server?: string
66 }) {
67 const { account, server } = options
68
69 const path = account
70 ? '/api/v1/server/blocklist/accounts'
71 : '/api/v1/server/blocklist/servers'
72
73 return this.postBodyRequest({
74 ...options,
75
76 path,
77 fields: {
78 accountName: account,
79 host: server
80 },
81 defaultExpectedStatus: HttpStatusCode.NO_CONTENT_204
82 })
83 }
84
85 // ---------------------------------------------------------------------------
86
87 removeFromMyBlocklist (options: OverrideCommandOptions & {
88 account?: string
89 server?: string
90 }) {
91 const { account, server } = options
92
93 const path = account
94 ? '/api/v1/users/me/blocklist/accounts/' + account
95 : '/api/v1/users/me/blocklist/servers/' + server
96
97 return this.deleteRequest({
98 ...options,
99
100 path,
101 defaultExpectedStatus: HttpStatusCode.NO_CONTENT_204
102 })
103 }
104
105 removeFromServerBlocklist (options: OverrideCommandOptions & {
106 account?: string
107 server?: string
108 }) {
109 const { account, server } = options
110
111 const path = account
112 ? '/api/v1/server/blocklist/accounts/' + account
113 : '/api/v1/server/blocklist/servers/' + server
114
115 return this.deleteRequest({
116 ...options,
117
118 path,
119 defaultExpectedStatus: HttpStatusCode.NO_CONTENT_204
120 })
121 }
122
123 private listBlocklist <T> (options: ListBlocklistOptions, path: string) {
124 const { start, count, sort = '-createdAt' } = options
125
126 return this.getRequestBody<ResultList<T>>({
127 ...options,
128
129 path,
130 query: { start, count, sort },
131 defaultExpectedStatus: HttpStatusCode.OK_200
132 })
133 }
134
135}