RestClient { public void downloadFile(final String path, final File saveTo, final ProgressListener progressListener) throws IOException, ServerException { Link link = cloudApi.getDownloadLink(path); new RestClientIO(client, credentials.getHeaders()) .downloadUrl(link.getHref(), new FileDownloadListener(saveTo, progressListener)); } RestClient(final Credentials credentials);  RestClient(final Credentials credentials, final OkHttpClient client);  RestClient(final Credentials credentials, final OkHttpClient client, final String serverUrl); ApiVersion getApiVersion(); Operation getOperation(final String operationId); Operation getOperation(final Link link); Operation waitProgress(final Link link, final Runnable waiting); DiskInfo getDiskInfo(); DiskInfo getDiskInfo(final String fields); Resource getResources(final ResourcesArgs args); ResourceList getFlatResourceList(final ResourcesArgs args); ResourceList getLastUploadedResources(final ResourcesArgs args); Resource patchResource(final ResourcesArgs args); Resource listPublicResources(final ResourcesArgs args); Resource getTrashResources(final ResourcesArgs args); Link deleteFromTrash(final String path); Link restoreFromTrash(final String path, final String name, final Boolean overwrite); void downloadFile(final String path, final File saveTo, final ProgressListener progressListener); void downloadFile(final String path, final DownloadListener downloadListener); Link saveFromUrl(final String url, final String serverPath); Link getUploadLink(final String serverPath, final boolean overwrite); void uploadFile(final Link link, final boolean resumeUpload, final File localSource,
                           final ProgressListener progressListener); Link delete(final String path, final boolean permanently); Link makeFolder(final String path); Link copy(final String from, final String path, final boolean overwrite); Link move(final String from, final String path, final boolean overwrite); Link publish(final String path); Link unpublish(final String path); void downloadPublicResource(final String publicKey, final String path, final File saveTo,
                                       final ProgressListener progressListener); Link savePublicResource(final String publicKey, final String path, final String name);  }
@Test public void testDownloadFile() throws Exception { String path = "/download-test.jpg"; File local = new File("/tmp/"+path); local.delete(); assertFalse(local.exists()); client.downloadFile(path, local, new ProgressListener() { @Override public void updateProgress(long loaded, long total) { logger.info("updateProgress: " + loaded + " / " + total); } @Override public boolean hasCancelled() { return false; } }); logger.info("length: " + local.length()); assertTrue(local.length() == 2031252); assertTrue(local.delete()); }