Add 'sdk/java-v2/' from commit '55f103e336ca9fb8bf1720d2ef4ee8dd4e221118'
[arvados.git] / sdk / java-v2 / src / main / java / org / arvados / client / api / client / KeepServerApiClient.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.Request;
11 import okhttp3.RequestBody;
12 import org.arvados.client.api.client.CountingFileRequestBody.TransferData;
13 import org.arvados.client.common.Headers;
14 import org.arvados.client.config.ConfigProvider;
15 import org.slf4j.Logger;
16
17 import java.io.File;
18 import java.util.Map;
19
20 public class KeepServerApiClient extends BaseApiClient {
21
22     private final Logger log = org.slf4j.LoggerFactory.getLogger(KeepServerApiClient.class);
23
24     public KeepServerApiClient(ConfigProvider config) {
25         super(config);
26     }
27
28     public String upload(String url, Map<String, String> headers, File body) {
29
30         log.debug("Upload file {} to server location {}", body, url);
31
32         final TransferData transferData = new TransferData(body.length());
33
34         RequestBody requestBody =  new CountingFileRequestBody(body, transferData::updateTransferProgress);
35
36         Request request = getRequestBuilder()
37                 .url(url)
38                 .addHeader(Headers.X_KEEP_DESIRED_REPLICAS, headers.get(Headers.X_KEEP_DESIRED_REPLICAS))
39                 .put(requestBody)
40                 .build();
41
42         return newCall(request);
43     }
44
45     public byte[] download(String url) {
46
47         Request request = getRequestBuilder()
48                 .url(url)
49                 .get()
50                 .build();
51
52         return newFileCall(request);
53     }
54 }