/* * Copyright (C) The Arvados Authors. All rights reserved. * * SPDX-License-Identifier: AGPL-3.0 OR Apache-2.0 * */ package org.arvados.client.logic.keep; import org.arvados.client.api.client.KeepServerApiClient; import org.arvados.client.exception.ArvadosApiException; import org.arvados.client.config.ConfigProvider; import org.slf4j.Logger; import java.io.File; import java.util.Map; public class FileTransferHandler { private final String host; private final KeepServerApiClient keepServerApiClient; private final Map headers; private final Logger log = org.slf4j.LoggerFactory.getLogger(FileTransferHandler.class); public FileTransferHandler(String host, Map headers, ConfigProvider config) { this.host = host; this.headers = headers; this.keepServerApiClient = new KeepServerApiClient(config); } public String put(String hashString, File body) { String url = host + hashString; String locator = null; try { locator = keepServerApiClient.upload(url, headers, body); } catch (ArvadosApiException e) { log.error("Cannot upload file to Keep server.", e); } return locator; } public byte[] get(KeepLocator locator) { return get(locator.stripped(), locator.permissionHint()); } public byte[] get(String blockLocator, String authToken) { String url = host + blockLocator + "+" + authToken; try { return keepServerApiClient.download(url); } catch (ArvadosApiException e) { log.error("Cannot download file from Keep server.", e); return null; } } }