Merge branch '21283-callable-api-module'
[arvados.git] / sdk / java-v2 / src / main / java / org / arvados / client / api / client / KeepWebApiClient.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.Request;
12 import okhttp3.RequestBody;
13 import org.arvados.client.config.ConfigProvider;
14
15 import java.io.File;
16 import java.io.InputStream;
17
18 public class KeepWebApiClient extends BaseApiClient {
19
20     public KeepWebApiClient(ConfigProvider config) {
21         super(config);
22     }
23
24     public byte[] download(String collectionUuid, String filePathName) {
25         Request request = getRequestBuilder()
26                 .url(getUrlBuilder(collectionUuid,filePathName).build())
27                 .get()
28                 .build();
29
30         return newFileCall(request);
31     }
32
33     public String delete(String collectionUuid, String filePathName) {
34         Request request = getRequestBuilder()
35                 .url(getUrlBuilder(collectionUuid, filePathName).build())
36                 .delete()
37                 .build();
38
39         return newCall(request);
40     }
41
42     public String upload(String collectionUuid, File file, ProgressListener progressListener) {
43         RequestBody requestBody = new CountingFileRequestBody(file, progressListener);
44
45         Request request = getRequestBuilder()
46                 .url(getUrlBuilder(collectionUuid, file.getName()).build())
47                 .put(requestBody)
48                 .build();
49         return newCall(request);
50     }
51
52     public String upload(String collectionUuid, InputStream inputStream, String fileName, ProgressListener progressListener) {
53         RequestBody requestBody = new CountingStreamRequestBody(inputStream, progressListener);
54
55         Request request = getRequestBuilder()
56                 .url(getUrlBuilder(collectionUuid, fileName).build())
57                 .put(requestBody)
58                 .build();
59         return newCall(request);
60     }
61
62     private HttpUrl.Builder getUrlBuilder(String collectionUuid, String filePathName) {
63         return new HttpUrl.Builder()
64                 .scheme(config.getApiProtocol())
65                 .host(config.getKeepWebHost())
66                 .port(config.getKeepWebPort())
67                 .addPathSegment("c=" + collectionUuid)
68                 .addPathSegment(filePathName);
69     }
70 }