X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/6d1c41d6fd83824669cd1a6d714ea6da1ae7ab4c..cd98fa41731b9fbba04c282977b3a7a1b52db0e8:/sdk/java-v2/src/main/java/org/arvados/client/api/client/KeepWebApiClient.java diff --git a/sdk/java-v2/src/main/java/org/arvados/client/api/client/KeepWebApiClient.java b/sdk/java-v2/src/main/java/org/arvados/client/api/client/KeepWebApiClient.java index 05d39e9e60..ad37dad2bb 100644 --- a/sdk/java-v2/src/main/java/org/arvados/client/api/client/KeepWebApiClient.java +++ b/sdk/java-v2/src/main/java/org/arvados/client/api/client/KeepWebApiClient.java @@ -10,9 +10,14 @@ package org.arvados.client.api.client; import okhttp3.HttpUrl; import okhttp3.Request; import okhttp3.RequestBody; +import okhttp3.Response; +import okhttp3.ResponseBody; + import org.arvados.client.config.ConfigProvider; import java.io.File; +import java.io.IOException; +import java.io.InputStream; public class KeepWebApiClient extends BaseApiClient { @@ -29,6 +34,27 @@ public class KeepWebApiClient extends BaseApiClient { return newFileCall(request); } + public InputStream get(String collectionUuid, String filePathName, long start, Long end) throws IOException { + Request.Builder builder = this.getRequestBuilder(); + String rangeValue = "bytes=" + start + "-"; + if (end != null) { + rangeValue += end; + } + builder.addHeader("Range", rangeValue); + Request request = builder.url(this.getUrlBuilder(collectionUuid, filePathName).build()).get().build(); + Response response = client.newCall(request).execute(); + if (!response.isSuccessful()) { + response.close(); + throw new IOException("Failed to download file: " + response); + } + ResponseBody body = response.body(); + if (body == null) { + response.close(); + throw new IOException("Response body is null for request: " + request); + } + return body.byteStream(); + } + public String delete(String collectionUuid, String filePathName) { Request request = getRequestBuilder() .url(getUrlBuilder(collectionUuid, filePathName).build()) @@ -48,6 +74,16 @@ public class KeepWebApiClient extends BaseApiClient { return newCall(request); } + public String upload(String collectionUuid, InputStream inputStream, String fileName, ProgressListener progressListener) { + RequestBody requestBody = new CountingStreamRequestBody(inputStream, progressListener); + + Request request = getRequestBuilder() + .url(getUrlBuilder(collectionUuid, fileName).build()) + .put(requestBody) + .build(); + return newCall(request); + } + private HttpUrl.Builder getUrlBuilder(String collectionUuid, String filePathName) { return new HttpUrl.Builder() .scheme(config.getApiProtocol())