/** * */ package org.lodder.subtools.sublibrary.util.http; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.dropbox.core.DbxException; import com.dropbox.core.DbxRequestConfig; import com.dropbox.core.v2.DbxClientV2; /** * @author lodder * */ public class DropBoxClient { private static DropBoxClient dbc; private DbxClientV2 dbxClient; private String locationOffset = "/Ondertitels/PrivateRepo/"; private String unSortedLocationOffset = "/Ondertitels/Unsorted"; private static final Logger LOGGER = LoggerFactory.getLogger(DropBoxClient.class); DropBoxClient() { dropboxInit(); } public static DropBoxClient getDropBoxClient() { if (dbc == null) dbc = new DropBoxClient(); return dbc; } private void dropboxInit() { final String accessToken = "3x5qOT-XdxgAAAAAAAAAAVa2Hrj23e7EiO98AZqw-UqGEr7I4lJG6eL8M1s9LlG0"; DbxRequestConfig config = new DbxRequestConfig("PersonalDownload/1.0"); dbxClient = new DbxClientV2(config, accessToken); } public boolean doDownloadFile(String location, File output) { boolean success = false; try (FileOutputStream outputStream = new FileOutputStream(output)) { dbxClient.files().download(locationOffset + location).download(outputStream); success = true; outputStream.close(); } catch (DbxException | IOException e) { LOGGER.error("doDownloadFile", e); } return success; } public void put(File inputFile, String filename, String languageCode) { FileInputStream inputStream = null; try { inputStream = new FileInputStream(inputFile); dbxClient.files().upload(unSortedLocationOffset + "/" + languageCode + "/" + filename).uploadAndFinish(inputStream, inputFile.length()); } catch (DbxException | IOException e) { LOGGER.error("upload path: " + unSortedLocationOffset + "/" + languageCode + "/" + filename ); LOGGER.error("put", e); } finally { if (inputStream != null) { try { inputStream.close(); } catch (IOException e) { LOGGER.error("put close inputStream", e); } } } } /** * @param location * @return */ public String getFile(String location) { String content = ""; try { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); dbxClient.files().download(location).download(outputStream); content = outputStream.toString("UTF-8"); outputStream.close(); } catch (DbxException | IOException e) { LOGGER.error("getFile", e); } return content; } }