Add 'sdk/java-v2/' from commit '55f103e336ca9fb8bf1720d2ef4ee8dd4e221118'
[arvados.git] / sdk / java-v2 / src / main / java / org / arvados / client / api / client / GroupsApiClient.java
1 /*
2  * Copyright (C) The Arvados Authors. All rights reserved.
3  *
4  * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0
5  *
6  */
7
8 package org.arvados.client.api.client;
9
10 import okhttp3.HttpUrl;
11 import okhttp3.HttpUrl.Builder;
12 import okhttp3.Request;
13 import okhttp3.RequestBody;
14 import org.arvados.client.api.model.Group;
15 import org.arvados.client.api.model.GroupList;
16 import org.arvados.client.api.model.argument.ContentsGroup;
17 import org.arvados.client.api.model.argument.UntrashGroup;
18 import org.arvados.client.config.ConfigProvider;
19 import org.slf4j.Logger;
20
21 public class GroupsApiClient extends BaseStandardApiClient<Group, GroupList> {
22
23     private static final String RESOURCE = "groups";
24     private final Logger log = org.slf4j.LoggerFactory.getLogger(GroupsApiClient.class);
25
26     public GroupsApiClient(ConfigProvider config) {
27         super(config);
28     }
29
30     public GroupList contents(ContentsGroup contentsGroup) {
31         log.debug("Get {} contents", getType().getSimpleName());
32         Builder urlBuilder = getUrlBuilder().addPathSegment("contents");
33         addQueryParameters(urlBuilder, contentsGroup);
34         HttpUrl url = urlBuilder.build();
35         Request request = getRequestBuilder().url(url).build();
36         return callForList(request);
37     }
38
39     public Group untrash(UntrashGroup untrashGroup) {
40         log.debug("Untrash {} by UUID {}", getType().getSimpleName(), untrashGroup.getUuid());
41         HttpUrl url = getUrlBuilder().addPathSegment(untrashGroup.getUuid()).addPathSegment("untrash").build();
42         RequestBody requestBody = getJsonRequestBody(untrashGroup);
43         Request request = getRequestBuilder().post(requestBody).url(url).build();
44         return callForType(request);
45     }
46
47     @Override
48     String getResource() {
49         return RESOURCE;
50     }
51
52     @Override
53     Class<Group> getType() {
54         return Group.class;
55     }
56
57     @Override
58     Class<GroupList> getListType() {
59         return GroupList.class;
60     }
61 }