X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/7ace628b611d7674e420262d9fc5e757e8c686a6..ddfb91e9eee0902fba8b972e2724b2eb4707654a:/src/services/common-service/common-service.ts diff --git a/src/services/common-service/common-service.ts b/src/services/common-service/common-service.ts index ddaf2ab02f..8e9fe63170 100644 --- a/src/services/common-service/common-service.ts +++ b/src/services/common-service/common-service.ts @@ -87,11 +87,13 @@ export class CommonService { return mapKeys ? CommonService.mapResponseKeys(response) : response.data; }) .catch(({ response }) => { - actions.progressFn(reqId, false); - const errors = CommonService.mapResponseKeys(response) as Errors; - errors.status = response.status; - actions.errorFn(reqId, errors, showErrors); - throw errors; + if (response) { + actions.progressFn(reqId, false); + const errors = CommonService.mapResponseKeys(response) as Errors; + errors.status = response.status; + actions.errorFn(reqId, errors, showErrors); + throw errors; + } }); } @@ -105,19 +107,27 @@ export class CommonService { ); } - delete(uuid: string): Promise { + delete(uuid: string, showErrors?: boolean): Promise { this.validateUuid(uuid); return CommonService.defaultResponse( this.serverApi .delete(`/${this.resourceType}/${uuid}`), - this.actions + this.actions, + true, // mapKeys + showErrors ); } get(uuid: string, showErrors?: boolean, select?: string[], session?: Session) { this.validateUuid(uuid); - const cfg: AxiosRequestConfig = {}; + const cfg: AxiosRequestConfig = { + params: { + select: select + ? `[${select.map(snakeCase).map(s => `"${s}"`).join(',')}]` + : undefined + } + }; if (session) { cfg.baseURL = session.baseUrl; cfg.headers = { 'Authorization': 'Bearer ' + session.token }; @@ -125,7 +135,7 @@ export class CommonService { return CommonService.defaultResponse( this.serverApi - .get(`/${this.resourceType}/${uuid}`, session ? cfg : undefined), + .get(`/${this.resourceType}/${uuid}`, cfg), this.actions, true, // mapKeys showErrors @@ -146,11 +156,14 @@ export class CommonService { return CommonService.defaultResponse( this.serverApi.get(`/${this.resourceType}`, { params }), this.actions, + true, showErrors ); } else { // Using the POST special case to avoid URI length 414 errors. - const formData = new FormData(); + // We must use urlencoded post body since api doesn't support form data + // const formData = new FormData(); + const formData = new URLSearchParams(); formData.append("_method", "GET"); Object.keys(params).forEach(key => { if (params[key] !== undefined) { @@ -158,23 +171,22 @@ export class CommonService { } }); return CommonService.defaultResponse( - this.serverApi.post(`/${this.resourceType}`, formData, { - params: { - _method: 'GET' - } - }), + this.serverApi.post(`/${this.resourceType}`, formData, {}), this.actions, + true, showErrors ); } } - update(uuid: string, data: Partial) { + update(uuid: string, data: Partial, showErrors?: boolean) { this.validateUuid(uuid); return CommonService.defaultResponse( this.serverApi .put(`/${this.resourceType}/${uuid}`, data && CommonService.mapKeys(snakeCase)(data)), - this.actions + this.actions, + undefined, // mapKeys + showErrors ); } }