]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - shared/extra-utils/shared/abstract-command.ts
Move plugin blocklist mock
[github/Chocobozzz/PeerTube.git] / shared / extra-utils / shared / abstract-command.ts
CommitLineData
a6a79eae 1import { HttpStatusCode } from '@shared/core-utils'
0c1a77e9 2import { makeDeleteRequest, makeGetRequest, makePostBodyRequest, makePutBodyRequest, unwrapBody, unwrapText } from '../requests/requests'
a6a79eae
C
3import { ServerInfo } from '../server/servers'
4
e8bd7ce7 5export interface OverrideCommandOptions {
a6a79eae
C
6 token?: string
7 expectedStatus?: number
8}
9
e8bd7ce7
C
10interface CommonCommandOptions extends OverrideCommandOptions {
11 path: string
12 defaultExpectedStatus: number
13}
14
c1bc8ee4 15interface GetCommandOptions extends CommonCommandOptions {
a92ddacb 16 query?: { [ id: string ]: any }
c1bc8ee4
C
17 contentType?: string
18 accept?: string
19}
20
a6a79eae
C
21abstract class AbstractCommand {
22
e8bd7ce7 23 private expectedStatus: HttpStatusCode
a6a79eae
C
24
25 constructor (
26 protected server: ServerInfo
27 ) {
28
29 }
30
31 setServer (server: ServerInfo) {
32 this.server = server
33 }
34
35 setExpectedStatus (status: HttpStatusCode) {
36 this.expectedStatus = status
37 }
38
c1bc8ee4
C
39 protected getRequestBody <T> (options: GetCommandOptions) {
40 return unwrapBody<T>(this.getRequest(options))
41 }
42
43 protected getRequestText (options: GetCommandOptions) {
44 return unwrapText(this.getRequest(options))
e8bd7ce7
C
45 }
46
0c1a77e9
C
47 protected deleteRequest (options: CommonCommandOptions) {
48 return makeDeleteRequest(this.buildCommonRequestOptions(options))
49 }
50
e8bd7ce7
C
51 protected putBodyRequest (options: CommonCommandOptions & {
52 fields?: { [ fieldName: string ]: any }
53 }) {
54 const { fields } = options
55
56 return makePutBodyRequest({
57 ...this.buildCommonRequestOptions(options),
58
59 fields
60 })
61 }
62
a6a79eae 63 protected postBodyRequest (options: CommonCommandOptions & {
a6a79eae
C
64 fields?: { [ fieldName: string ]: any }
65 }) {
e8bd7ce7 66 const { fields } = options
a6a79eae
C
67
68 return makePostBodyRequest({
e8bd7ce7
C
69 ...this.buildCommonRequestOptions(options),
70
71 fields
72 })
73 }
74
75 private buildCommonRequestOptions (options: CommonCommandOptions) {
76 const { token, expectedStatus, defaultExpectedStatus, path } = options
77
78 return {
a6a79eae
C
79 url: this.server.url,
80 path,
81 token: token ?? this.server.accessToken,
a6a79eae 82 statusCodeExpected: expectedStatus ?? this.expectedStatus ?? defaultExpectedStatus
e8bd7ce7 83 }
a6a79eae 84 }
c1bc8ee4
C
85
86 private getRequest (options: GetCommandOptions) {
87 const { query, contentType, accept } = options
88
89 return makeGetRequest({
90 ...this.buildCommonRequestOptions(options),
91
92 query,
93 contentType,
94 accept
95 })
96 }
a6a79eae
C
97}
98
99export {
100 AbstractCommand
101}