From 73699c70c40d2e82f1871ba042ea5d8a79cd5fd1 Mon Sep 17 00:00:00 2001 From: Michal Klobukowski Date: Mon, 2 Jul 2018 12:12:08 +0200 Subject: [PATCH] Create GroupsService and implement contents method Feature #13702 Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski --- src/services/groups-service/groups-service.ts | 49 +++++++++++++++++++ src/services/services.ts | 3 ++ 2 files changed, 52 insertions(+) create mode 100644 src/services/groups-service/groups-service.ts diff --git a/src/services/groups-service/groups-service.ts b/src/services/groups-service/groups-service.ts new file mode 100644 index 00000000..9016714b --- /dev/null +++ b/src/services/groups-service/groups-service.ts @@ -0,0 +1,49 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + +import * as _ from "lodash"; +import CommonResourceService, { Resource, ListResults } from "../../common/api/common-resource-service"; +import FilterBuilder from "../../common/api/filter-builder"; +import OrderBuilder from "../../common/api/order-builder"; +import { AxiosInstance } from "axios"; + +interface GroupResource extends Resource { + name: string; + groupClass: string; + description: string; + properties: string; + writeableBy: string[]; + trashAt: string; + deleteAt: string; + isTrashed: boolean; +} + +interface ContensArguments { + limit?: number; + offset?: number; + order?: OrderBuilder; + filters?: FilterBuilder; + recursive?: boolean; +} + +export default class GroupsService extends CommonResourceService { + + constructor(serverApi: AxiosInstance) { + super(serverApi, "groups"); + } + + contents (uuid: string, args: ContensArguments = {}): Promise> { + const { filters, order, ...other } = args; + const params = { + ...other, + filters: filters ? filters.get() : undefined, + order: order ? order.get() : undefined + }; + return this.serverApi + .get(this.resourceType + `/${uuid}/contents`, { + params: CommonResourceService.mapKeys(_.snakeCase)(params) + }) + .then(CommonResourceService.mapResponseKeys); + } +} \ No newline at end of file diff --git a/src/services/services.ts b/src/services/services.ts index 47a24b34..7ad2ff7d 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -5,7 +5,10 @@ import AuthService from "./auth-service/auth-service"; import ProjectService from "./project-service/project-service"; import CollectionService from "./collection-service/collection-service"; +import GroupsService from "./groups-service/groups-service"; +import { serverApi } from "../common/api/server-api"; export const authService = new AuthService(); export const projectService = new ProjectService(); export const collectionService = new CollectionService(); +export const groupsService = new GroupsService(serverApi); -- 2.30.2