import { HttpStatusCode } from '@shared/core-utils'
-import { makeDeleteRequest, makeGetRequest, makePostBodyRequest, makePutBodyRequest, unwrapBody, unwrapText } from '../requests/requests'
+import {
+ makeDeleteRequest,
+ makeGetRequest,
+ makePostBodyRequest,
+ makePutBodyRequest,
+ makeUploadRequest,
+ unwrapBody,
+ unwrapText
+} from '../requests/requests'
import { ServerInfo } from '../server/servers'
export interface OverrideCommandOptions {
expectedStatus?: number
}
-interface CommonCommandOptions extends OverrideCommandOptions {
+interface InternalCommonCommandOptions extends OverrideCommandOptions {
path: string
+ // If we automatically send the server token if the token is not provided
+ implicitToken: boolean
defaultExpectedStatus: number
}
-interface GetCommandOptions extends CommonCommandOptions {
+interface InternalGetCommandOptions extends InternalCommonCommandOptions {
query?: { [ id: string ]: any }
contentType?: string
accept?: string
this.expectedStatus = status
}
- protected getRequestBody <T> (options: GetCommandOptions) {
+ protected getRequestBody <T> (options: InternalGetCommandOptions) {
return unwrapBody<T>(this.getRequest(options))
}
- protected getRequestText (options: GetCommandOptions) {
+ protected getRequestText (options: InternalGetCommandOptions) {
return unwrapText(this.getRequest(options))
}
- protected getRequest (options: GetCommandOptions) {
+ protected getRequest (options: InternalGetCommandOptions) {
const { redirects, query, contentType, accept } = options
return makeGetRequest({
})
}
- protected deleteRequest (options: CommonCommandOptions) {
+ protected deleteRequest (options: InternalCommonCommandOptions) {
return makeDeleteRequest(this.buildCommonRequestOptions(options))
}
- protected putBodyRequest (options: CommonCommandOptions & {
+ protected putBodyRequest (options: InternalCommonCommandOptions & {
fields?: { [ fieldName: string ]: any }
}) {
const { fields } = options
})
}
- protected postBodyRequest (options: CommonCommandOptions & {
+ protected postBodyRequest (options: InternalCommonCommandOptions & {
fields?: { [ fieldName: string ]: any }
}) {
const { fields } = options
})
}
- private buildCommonRequestOptions (options: CommonCommandOptions) {
+ protected postUploadRequest (options: InternalCommonCommandOptions & {
+ fields?: { [ fieldName: string ]: any }
+ attaches?: any
+ }) {
+ const { fields, attaches } = options
+
+ return makeUploadRequest({
+ ...this.buildCommonRequestOptions(options),
+
+ method: 'POST',
+ fields,
+ attaches
+ })
+ }
+
+ protected putUploadRequest (options: InternalCommonCommandOptions & {
+ fields?: { [ fieldName: string ]: any }
+ attaches?: any
+ }) {
+ const { fields, attaches } = options
+
+ return makeUploadRequest({
+ ...this.buildCommonRequestOptions(options),
+
+ method: 'PUT',
+ fields,
+ attaches
+ })
+ }
+
+ private buildCommonRequestOptions (options: InternalCommonCommandOptions) {
const { token, expectedStatus, defaultExpectedStatus, path } = options
+ const fallbackToken = options.implicitToken
+ ? this.server.accessToken
+ : undefined
+
return {
url: this.server.url,
path,
- // Token can be null if we don't want to add it
- token: token !== undefined ? token : this.server.accessToken,
+ token: token !== undefined ? token : fallbackToken,
statusCodeExpected: expectedStatus ?? this.expectedStatus ?? defaultExpectedStatus
}