import { HttpStatusCode } from '@shared/core-utils'
-import { makePostBodyRequest } from '../requests/requests'
+import { makeGetRequest, makePostBodyRequest, makePutBodyRequest, unwrap } from '../requests/requests'
import { ServerInfo } from '../server/servers'
-export interface CommonCommandOptions {
+export interface OverrideCommandOptions {
token?: string
expectedStatus?: number
}
+interface CommonCommandOptions extends OverrideCommandOptions {
+ path: string
+ defaultExpectedStatus: number
+}
+
abstract class AbstractCommand {
- private expectedStatus = HttpStatusCode.OK_200
+ private expectedStatus: HttpStatusCode
constructor (
protected server: ServerInfo
this.expectedStatus = status
}
+ protected getRequestBody <T> (options: CommonCommandOptions) {
+ return unwrap<T>(makeGetRequest(this.buildCommonRequestOptions(options)))
+ }
+
+ protected putBodyRequest (options: CommonCommandOptions & {
+ fields?: { [ fieldName: string ]: any }
+ }) {
+ const { fields } = options
+
+ return makePutBodyRequest({
+ ...this.buildCommonRequestOptions(options),
+
+ fields
+ })
+ }
+
protected postBodyRequest (options: CommonCommandOptions & {
- path: string
- defaultExpectedStatus: number
fields?: { [ fieldName: string ]: any }
}) {
- const { token, fields, expectedStatus, defaultExpectedStatus, path } = options
+ const { fields } = options
return makePostBodyRequest({
+ ...this.buildCommonRequestOptions(options),
+
+ fields
+ })
+ }
+
+ private buildCommonRequestOptions (options: CommonCommandOptions) {
+ const { token, expectedStatus, defaultExpectedStatus, path } = options
+
+ return {
url: this.server.url,
path,
token: token ?? this.server.accessToken,
- fields,
statusCodeExpected: expectedStatus ?? this.expectedStatus ?? defaultExpectedStatus
- })
+ }
}
}