X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/b2259d67bedad8431e8a513ce0bc46ffeb8ffdbd..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 0145b0fc4c..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 @@ -9,8 +9,16 @@ 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 { public KeepWebApiClient(ConfigProvider config) { @@ -26,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()) @@ -35,6 +64,26 @@ public class KeepWebApiClient extends BaseApiClient { return newCall(request); } + public String upload(String collectionUuid, File file, ProgressListener progressListener) { + RequestBody requestBody = new CountingFileRequestBody(file, progressListener); + + Request request = getRequestBuilder() + .url(getUrlBuilder(collectionUuid, file.getName()).build()) + .put(requestBody) + .build(); + 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())