16115: Fixes filter building for list equality comparison.
[arvados-workbench2.git] / src / services / api-client-authorization-service / api-client-authorization-service.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { AxiosInstance } from "axios";
6 import { ApiActions } from 'services/api/api-actions';
7 import { ApiClientAuthorization } from 'models/api-client-authorization';
8 import { CommonService, ListResults } from 'services/common-service/common-service';
9 import { extractUuidObjectType, ResourceObjectType } from "models/resource";
10 import { FilterBuilder } from "services/api/filter-builder";
11
12 export class ApiClientAuthorizationService extends CommonService<ApiClientAuthorization> {
13     constructor(serverApi: AxiosInstance, actions: ApiActions) {
14         super(serverApi, "api_client_authorizations", actions);
15     }
16
17     createCollectionSharingToken(uuid: string): Promise<ApiClientAuthorization> {
18         if (extractUuidObjectType(uuid) !== ResourceObjectType.COLLECTION) {
19             throw new Error(`UUID ${uuid} is not a collection`);
20         }
21         return this.create({
22             scopes: [
23                 `GET /arvados/v1/collections/${uuid}`,
24                 `GET /arvados/v1/collections/${uuid}/`,
25                 `GET /arvados/v1/keep_services/accessible`,
26             ]
27         });
28     }
29
30     listCollectionSharingTokens(uuid: string): Promise<ListResults<ApiClientAuthorization>> {
31         if (extractUuidObjectType(uuid) !== ResourceObjectType.COLLECTION) {
32             throw new Error(`UUID ${uuid} is not a collection`);
33         }
34         return this.list({
35             filters: new FilterBuilder()
36                 .addEqual("scopes", [
37                     `GET /arvados/v1/collections/${uuid}`,
38                     `GET /arvados/v1/collections/${uuid}/`,
39                     "GET /arvados/v1/keep_services/accessible"
40                 ]).getFilters()
41         });
42     }
43 }