+ * Upload file immediately
+ *
+ * @param uploadImportRequest {@link UploadImportRequest}
+ * @param inputStream {@link InputStream} of file which will be uploaded
+ * @param filename Set the filename, including file extension
+ * @return TRD
+ * @throws IOException
+ * @throws URISyntaxException
+ */
+ public abstract TRAR upload(
+ @NotNull final UploadImportRequest uploadImportRequest, @NotNull final InputStream inputStream, @NotNull String filename
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
/**
* Create a task which uploads one input file.
@@ -170,8 +193,25 @@ public abstract TRAR upload(
* @throws URISyntaxException
*/
public abstract TRAR upload(
- @NotNull final TRAR taskResponseResult, @NotNull final InputStream inputStream
- ) throws IOException, URISyntaxException;
+ @NotNull final TRAR taskResponseResult, @NotNull final InputStream inputStream
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
+
+ /**
+ * Create a task which uploads one input file.
+ * It allows your users to directly upload input files to CloudConvert, without temporary storing them on your server.
+ *
+ * Upload file using existing task response data result
+ *
+ * @param taskResponseResult {@link TRAR}
+ * @param inputStream {@link InputStream} of file which will be uploaded
+ * @param filename Set the filename, including file extension
+ * @return TRD
+ * @throws IOException
+ * @throws URISyntaxException
+ */
+ public abstract TRAR upload(
+ @NotNull final TRAR taskResponseResult, @NotNull final InputStream inputStream, @NotNull final String filename
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
/**
* Create a task which uploads one input file.
@@ -187,8 +227,26 @@ public abstract TRAR upload(
* @throws URISyntaxException
*/
public abstract TRAR upload(
- @NotNull final String taskId, @NotNull final TaskResponse.Result.Form taskResponseResultForm, @NotNull final InputStream inputStream
- ) throws IOException, URISyntaxException;
+ @NotNull final String taskId, @NotNull final TaskResponse.Result.Form taskResponseResultForm, @NotNull final InputStream inputStream
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
+
+ /**
+ * Create a task which uploads one input file.
+ * It allows your users to directly upload input files to CloudConvert, without temporary storing them on your server.
+ *
+ * Upload file using existing task id and {@link com.cloudconvert.dto.response.TaskResponse.Result.Form}
+ *
+ * @param taskId task
+ * @param taskResponseResultForm {@link com.cloudconvert.dto.response.TaskResponse.Result.Form}
+ * @param inputStream {@link InputStream} of file which will be uploaded
+ * @param filename Set the filename, including file extension
+ * @return
+ * @throws IOException
+ * @throws URISyntaxException
+ */
+ public abstract TRAR upload(
+ @NotNull final String taskId, @NotNull final TaskResponse.Result.Form taskResponseResultForm, @NotNull final InputStream inputStream, @NotNull final String filename
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
/**
* Create a task to import files by downloading it from a S3 bucket.
@@ -199,11 +257,11 @@ public abstract TRAR upload(
* @throws URISyntaxException
*/
public abstract TRAR s3(
- @NotNull final S3ImportRequest s3ImportRequest
- ) throws IOException, URISyntaxException;
+ @NotNull final S3ImportRequest s3ImportRequest
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
protected HttpUriRequest getS3HttpUriRequest(
- @NotNull final S3ImportRequest s3ImportRequest
+ @NotNull final S3ImportRequest s3ImportRequest
) throws IOException, URISyntaxException {
final URI uri = getUri(ImmutableList.of(PATH_SEGMENT_IMPORT, PATH_SEGMENT_S3));
final HttpEntity httpEntity = getHttpEntity(s3ImportRequest);
@@ -220,11 +278,11 @@ protected HttpUriRequest getS3HttpUriRequest(
* @throws URISyntaxException
*/
public abstract TRAR azureBlob(
- @NotNull final AzureBlobImportRequest azureBlobImportRequest
- ) throws IOException, URISyntaxException;
+ @NotNull final AzureBlobImportRequest azureBlobImportRequest
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
protected HttpUriRequest getAzureBlobHttpUriRequest(
- @NotNull final AzureBlobImportRequest azureBlobImportRequest
+ @NotNull final AzureBlobImportRequest azureBlobImportRequest
) throws IOException, URISyntaxException {
final URI uri = getUri(ImmutableList.builder().add(PATH_SEGMENT_IMPORT).addAll(PATH_SEGMENTS_AZURE_BLOB).build());
final HttpEntity httpEntity = getHttpEntity(azureBlobImportRequest);
@@ -241,11 +299,11 @@ protected HttpUriRequest getAzureBlobHttpUriRequest(
* @throws URISyntaxException
*/
public abstract TRAR googleCloudStorage(
- @NotNull final GoogleCloudStorageImportRequest googleCloudStorageImportRequest
- ) throws IOException, URISyntaxException;
+ @NotNull final GoogleCloudStorageImportRequest googleCloudStorageImportRequest
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
protected HttpUriRequest getGoogleCloudHttpUriRequest(
- @NotNull final GoogleCloudStorageImportRequest googleCloudStorageImportRequest
+ @NotNull final GoogleCloudStorageImportRequest googleCloudStorageImportRequest
) throws IOException, URISyntaxException {
final URI uri = getUri(ImmutableList.of(PATH_SEGMENT_IMPORT, PATH_SEGMENT_GOOGLE_CLOUD_STORAGE));
final HttpEntity httpEntity = getHttpEntity(googleCloudStorageImportRequest);
@@ -262,11 +320,11 @@ protected HttpUriRequest getGoogleCloudHttpUriRequest(
* @throws URISyntaxException
*/
public abstract TRAR openStack(
- @NotNull final OpenStackImportRequest openStackImportRequest
- ) throws IOException, URISyntaxException;
+ @NotNull final OpenStackImportRequest openStackImportRequest
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
protected HttpUriRequest getOpenStackHttpUriRequest(
- @NotNull final OpenStackImportRequest openStackImportRequest
+ @NotNull final OpenStackImportRequest openStackImportRequest
) throws IOException, URISyntaxException {
final URI uri = getUri(ImmutableList.of(PATH_SEGMENT_IMPORT, PATH_SEGMENT_OPENSTACK));
final HttpEntity httpEntity = getHttpEntity(openStackImportRequest);
@@ -283,11 +341,11 @@ protected HttpUriRequest getOpenStackHttpUriRequest(
* @throws URISyntaxException
*/
public abstract TRAR sftp(
- @NotNull final SftpImportRequest sftpImportRequest
- ) throws IOException, URISyntaxException;
+ @NotNull final SftpImportRequest sftpImportRequest
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
protected HttpUriRequest getSftpHttpUriRequest(
- @NotNull final SftpImportRequest sftpImportRequest
+ @NotNull final SftpImportRequest sftpImportRequest
) throws IOException, URISyntaxException {
final URI uri = getUri(ImmutableList.of(PATH_SEGMENT_IMPORT, PATH_SEGMENT_SFTP));
final HttpEntity httpEntity = getHttpEntity(sftpImportRequest);
@@ -295,15 +353,57 @@ protected HttpUriRequest getSftpHttpUriRequest(
return getHttpUriRequest(HttpPost.class, uri, httpEntity);
}
+ /***
+ * Create a task to import a base64 file
+ *
+ * @param base64ImportRequest
+ * @return
+ * @throws IOException
+ * @throws URISyntaxException
+ */
+ public abstract TRAR base64(
+ @NotNull final Base64ImportRequest base64ImportRequest
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
+
+ protected HttpUriRequest getBase64HttpUriRequest(
+ @NotNull final Base64ImportRequest base64ImportRequest
+ ) throws IOException, URISyntaxException {
+ final URI uri = getUri(ImmutableList.of(PATH_SEGMENT_IMPORT, PATH_SEGMENT_BASE64));
+ final HttpEntity httpEntity = getHttpEntity(base64ImportRequest);
+
+ return getHttpUriRequest(HttpPost.class, uri, httpEntity);
+ }
+
+ /***
+ * Create a task to import raw file
+ *
+ * @param rawImportRequest
+ * @return
+ * @throws IOException
+ * @throws URISyntaxException
+ */
+ public abstract TRAR raw(
+ @NotNull final RawImportRequest rawImportRequest
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
+
+ protected HttpUriRequest getRawHttpUriRequest(
+ @NotNull final RawImportRequest rawImportRequest
+ ) throws IOException, URISyntaxException {
+ final URI uri = getUri(ImmutableList.of(PATH_SEGMENT_IMPORT, PATH_SEGMENT_RAW));
+ final HttpEntity httpEntity = getHttpEntity(rawImportRequest);
+
+ return getHttpUriRequest(HttpPost.class, uri, httpEntity);
+ }
+
protected HttpEntity getMultipartHttpEntity(
- final TaskResponse.Result.Form uploadImportResponseResultForm, final File file
+ final TaskResponse.Result.Form uploadImportResponseResultForm, final File file
) throws IOException {
// We still need to convert File to InputStream here, because if we don't, then async client will fail with ContentTooLongException if we do not
return getMultipartHttpEntity(uploadImportResponseResultForm, file.getName(), new FileInputStream(file));
}
protected HttpEntity getMultipartHttpEntity(
- final TaskResponse.Result.Form uploadImportResponseResultForm, final InputStream inputStream
+ final TaskResponse.Result.Form uploadImportResponseResultForm, final InputStream inputStream
) throws IOException {
try {
final MimeType mimeType = MimeTypes.getDefaultMimeTypes().forName(tika.detect(inputStream));
@@ -314,12 +414,11 @@ protected HttpEntity getMultipartHttpEntity(
}
protected HttpEntity getMultipartHttpEntity(
- final TaskResponse.Result.Form uploadImportResponseResultForm,
- @NotNull final String filename, final InputStream inputStream
+ final TaskResponse.Result.Form uploadImportResponseResultForm, @NotNull final String filename, final InputStream inputStream
) throws IOException {
final MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create().setContentType(ContentType.MULTIPART_FORM_DATA);
uploadImportResponseResultForm.getParameters().forEach(multipartEntityBuilder::addTextBody);
return new BufferedHttpEntity(multipartEntityBuilder.addPart(
- FormBodyPartBuilder.create("form", new InputStreamBody(new BufferedInputStream(inputStream), filename)).build()).build());
+ FormBodyPartBuilder.create("file", new InputStreamBody(new BufferedInputStream(inputStream), filename)).build()).build());
}
}
diff --git a/src/main/java/com/cloudconvert/resource/AbstractJobsResource.java b/src/main/java/com/cloudconvert/resource/AbstractJobsResource.java
index 99622b0..bd9620b 100644
--- a/src/main/java/com/cloudconvert/resource/AbstractJobsResource.java
+++ b/src/main/java/com/cloudconvert/resource/AbstractJobsResource.java
@@ -6,6 +6,8 @@
import com.cloudconvert.dto.response.JobResponse;
import com.cloudconvert.dto.response.Pageable;
import com.cloudconvert.dto.result.AbstractResult;
+import com.cloudconvert.exception.CloudConvertClientException;
+import com.cloudconvert.exception.CloudConvertServerException;
import com.cloudconvert.resource.params.Filter;
import com.cloudconvert.resource.params.Include;
import com.cloudconvert.resource.params.Pagination;
@@ -65,7 +67,7 @@ public AbstractJobsResource(
*/
public abstract JRAR create(
@NotNull final Map tasks
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
/**
* Create a job with one ore more tasks. Requires the task.write scope.
@@ -84,7 +86,7 @@ public abstract JRAR create(
*/
public abstract JRAR create(
@NotNull final Map tasks, @NotNull final String tag
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
protected HttpUriRequest getCreateHttpUriRequest(
@NotNull final Map tasks, @NotNull final String tag
@@ -110,7 +112,7 @@ protected HttpUriRequest getCreateHttpUriRequest(
*/
public abstract JRAR show(
@NotNull final String jobId
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
protected HttpUriRequest getShowHttpUriRequest(
@NotNull final String jobId
@@ -137,12 +139,12 @@ protected HttpUriRequest getShowHttpUriRequest(
*/
public abstract JRAR wait(
@NotNull final String jobId
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
protected HttpUriRequest getWaitHttpUriRequest(
@NotNull final String jobId
) throws URISyntaxException {
- final URI uri = getUri(ImmutableList.of(PATH_SEGMENT_JOBS, jobId, PATH_SEGMENT_WAIT));
+ final URI uri = getSyncUri(ImmutableList.of(PATH_SEGMENT_JOBS, jobId));
return getHttpUriRequest(HttpGet.class, uri);
}
@@ -154,7 +156,7 @@ protected HttpUriRequest getWaitHttpUriRequest(
* @throws IOException
* @throws URISyntaxException
*/
- public abstract JRPAR list() throws IOException, URISyntaxException;
+ public abstract JRPAR list() throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
/**
* List all jobs. Requires the task.read scope.
@@ -168,7 +170,7 @@ protected HttpUriRequest getWaitHttpUriRequest(
*/
public abstract JRPAR list(
@NotNull final Map filters
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
/**
* List all jobs. Requires the task.read scope.
@@ -183,7 +185,7 @@ public abstract JRPAR list(
*/
public abstract JRPAR list(
@NotNull final Map filters, @NotNull final List includes
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
/**
* List all jobs. Requires the task.read scope.
@@ -201,7 +203,7 @@ public abstract JRPAR list(
*/
public abstract JRPAR list(
@NotNull final Map filters, @NotNull final List includes, @Nullable final Pagination pagination
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
protected HttpUriRequest getListHttpUriRequest(
@NotNull final Map filters, @NotNull final List includes, @Nullable final Pagination pagination
@@ -225,7 +227,7 @@ protected HttpUriRequest getListHttpUriRequest(
*/
public abstract VAR delete(
@NotNull final String jobId
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
protected HttpUriRequest getDeleteHttpUriRequest(
@NotNull final String jobId
diff --git a/src/main/java/com/cloudconvert/resource/AbstractMergeFilesResource.java b/src/main/java/com/cloudconvert/resource/AbstractMergeFilesResource.java
index 5eb268b..51b44eb 100644
--- a/src/main/java/com/cloudconvert/resource/AbstractMergeFilesResource.java
+++ b/src/main/java/com/cloudconvert/resource/AbstractMergeFilesResource.java
@@ -5,6 +5,8 @@
import com.cloudconvert.dto.request.MergeFilesTaskRequest;
import com.cloudconvert.dto.response.TaskResponse;
import com.cloudconvert.dto.result.AbstractResult;
+import com.cloudconvert.exception.CloudConvertClientException;
+import com.cloudconvert.exception.CloudConvertServerException;
import com.google.common.collect.ImmutableList;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.HttpPost;
@@ -35,7 +37,7 @@ public AbstractMergeFilesResource(
*/
public abstract TRAR merge(
@NotNull final MergeFilesTaskRequest mergeFilesTaskRequest
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
protected HttpUriRequest getMergeHttpUriRequest(
@NotNull final MergeFilesTaskRequest mergeFilesTaskRequest
diff --git a/src/main/java/com/cloudconvert/resource/AbstractOptimizeFilesResource.java b/src/main/java/com/cloudconvert/resource/AbstractOptimizeFilesResource.java
index 5cbe64e..dbe5bf0 100644
--- a/src/main/java/com/cloudconvert/resource/AbstractOptimizeFilesResource.java
+++ b/src/main/java/com/cloudconvert/resource/AbstractOptimizeFilesResource.java
@@ -5,6 +5,8 @@
import com.cloudconvert.dto.request.OptimizeFilesTaskRequest;
import com.cloudconvert.dto.response.TaskResponse;
import com.cloudconvert.dto.result.AbstractResult;
+import com.cloudconvert.exception.CloudConvertClientException;
+import com.cloudconvert.exception.CloudConvertServerException;
import com.google.common.collect.ImmutableList;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.HttpPost;
@@ -35,7 +37,7 @@ public AbstractOptimizeFilesResource(
*/
public abstract TRAR optimize(
@NotNull final OptimizeFilesTaskRequest optimizeFilesTaskRequest
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
protected HttpUriRequest getOptimizeHttpUriRequest(
@NotNull final OptimizeFilesTaskRequest optimizeFilesTaskRequest
diff --git a/src/main/java/com/cloudconvert/resource/AbstractResource.java b/src/main/java/com/cloudconvert/resource/AbstractResource.java
index 291ed25..827923f 100644
--- a/src/main/java/com/cloudconvert/resource/AbstractResource.java
+++ b/src/main/java/com/cloudconvert/resource/AbstractResource.java
@@ -105,6 +105,20 @@ protected URI getUri(
return new URIBuilder(settingsProvider.getApiUrl()).setPathSegments(v2PathSegments).setParameters(nameValuePairs).build();
}
+ protected URI getSyncUri(
+ final List pathSegments
+ ) throws URISyntaxException {
+ return getSyncUri(pathSegments, ImmutableList.of());
+ }
+
+ protected URI getSyncUri(
+ final List pathSegments, final List nameValuePairs
+ ) throws URISyntaxException {
+ final List v2PathSegments = ImmutableList.builder().add(V2).addAll(pathSegments).build();
+
+ return new URIBuilder(settingsProvider.getSyncApiUrl()).setPathSegments(v2PathSegments).setParameters(nameValuePairs).build();
+ }
+
protected HttpEntity getHttpEntity(
final Request request
) throws JsonProcessingException {
@@ -117,6 +131,10 @@ protected HttpEntity getHttpEntity(
return new ByteArrayEntity(objectMapperProvider.provide().writeValueAsBytes(map), ContentType.APPLICATION_JSON);
}
+ protected String getJson(final Map map) throws JsonProcessingException {
+ return objectMapperProvider.provide().writeValueAsString(map);
+ }
+
protected HttpUriRequest getHttpUriRequest(
final Class extends HttpRequestBase> httpRequestBaseClass, final URI uri
) {
diff --git a/src/main/java/com/cloudconvert/resource/AbstractSignedUrlResource.java b/src/main/java/com/cloudconvert/resource/AbstractSignedUrlResource.java
new file mode 100644
index 0000000..b333f25
--- /dev/null
+++ b/src/main/java/com/cloudconvert/resource/AbstractSignedUrlResource.java
@@ -0,0 +1,72 @@
+package com.cloudconvert.resource;
+
+import com.cloudconvert.client.mapper.ObjectMapperProvider;
+import com.cloudconvert.client.setttings.SettingsProvider;
+import com.cloudconvert.dto.request.TaskRequest;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.google.common.collect.ImmutableMap;
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.codec.binary.Hex;
+import org.jetbrains.annotations.NotNull;
+
+import javax.crypto.Mac;
+import javax.crypto.spec.SecretKeySpec;
+
+import java.nio.charset.StandardCharsets;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+import java.util.Map;
+
+
+public abstract class AbstractSignedUrlResource extends AbstractResource {
+
+ public static final String HMAC_SHA256 = "HmacSHA256";
+
+
+ public AbstractSignedUrlResource(
+ final SettingsProvider settingsProvider, final ObjectMapperProvider objectMapperProvider
+ ) {
+ super(settingsProvider, objectMapperProvider);
+
+
+ }
+
+
+ public String sign(
+ @NotNull final String base,
+ @NotNull final String signingSecret,
+ @NotNull final Map tasks,
+ String cacheKey
+ ) throws InvalidKeyException, NoSuchAlgorithmException, JsonProcessingException {
+
+ String url = base;
+
+ String jobJson = getJson(ImmutableMap.of("tasks", tasks));
+
+ String base64Job = Base64.encodeBase64URLSafeString(jobJson.getBytes(StandardCharsets.UTF_8));
+
+ url = url.concat("?job=").concat(base64Job);
+
+ if (cacheKey != null) {
+ url = url.concat("&cache_key=").concat(cacheKey);
+ }
+
+ final Mac mac = Mac.getInstance(HMAC_SHA256);
+ final SecretKeySpec secretKeySpec = new SecretKeySpec(signingSecret.getBytes(), HMAC_SHA256);
+ mac.init(secretKeySpec);
+
+ url = url.concat("&s=").concat(Hex.encodeHexString(mac.doFinal(url.getBytes())));
+
+ return url;
+ }
+
+
+ public String sign(
+ @NotNull final String base,
+ @NotNull final String signingSecret,
+ @NotNull final Map tasks
+ ) throws InvalidKeyException, NoSuchAlgorithmException, JsonProcessingException {
+ return this.sign(base, signingSecret, tasks, null);
+ }
+
+}
diff --git a/src/main/java/com/cloudconvert/resource/AbstractTasksResource.java b/src/main/java/com/cloudconvert/resource/AbstractTasksResource.java
index dd63a4c..b76713a 100644
--- a/src/main/java/com/cloudconvert/resource/AbstractTasksResource.java
+++ b/src/main/java/com/cloudconvert/resource/AbstractTasksResource.java
@@ -2,16 +2,13 @@
import com.cloudconvert.client.mapper.ObjectMapperProvider;
import com.cloudconvert.client.setttings.SettingsProvider;
-import com.cloudconvert.dto.request.CaptureWebsitesTaskRequest;
-import com.cloudconvert.dto.request.ConvertFilesTaskRequest;
-import com.cloudconvert.dto.request.CreateArchivesTaskRequest;
-import com.cloudconvert.dto.request.ExecuteCommandsTaskRequest;
-import com.cloudconvert.dto.request.MergeFilesTaskRequest;
-import com.cloudconvert.dto.request.OptimizeFilesTaskRequest;
+import com.cloudconvert.dto.request.*;
import com.cloudconvert.dto.response.OperationResponse;
import com.cloudconvert.dto.response.Pageable;
import com.cloudconvert.dto.response.TaskResponse;
import com.cloudconvert.dto.result.AbstractResult;
+import com.cloudconvert.exception.CloudConvertClientException;
+import com.cloudconvert.exception.CloudConvertServerException;
import com.cloudconvert.resource.params.Filter;
import com.cloudconvert.resource.params.Include;
import com.cloudconvert.resource.params.Pagination;
@@ -63,6 +60,18 @@ public abstract class AbstractTasksResource abstractExecuteCommandsResource;
+ @Getter
+ private final AbstractCreateThumbnailsResource abstractCreateThumbnailsResource;
+
+ @Getter
+ private final AbstractGetMetadataResource abstractGetMetadataResource;
+
+ @Getter
+ private final AbstractWriteMetadataResource abstractWriteMetadataResource;
+
+ @Getter
+ private final AbstractAddWatermarkResource abstractAddWatermarkResource;
+
private final IncludesToNameValuePairsConverter includesToNameValuePairsConverter;
private final FiltersToNameValuePairsConverter filtersToNameValuePairsConverter;
private final AlternativeToNameValuePairsConverter alternativeToNameValuePairsConverter;
@@ -72,7 +81,9 @@ public AbstractTasksResource(
final SettingsProvider settingsProvider, final ObjectMapperProvider objectMapperProvider,
final AbstractConvertFilesResource abstractConvertFilesResource, final AbstractOptimizeFilesResource abstractOptimizeFilesResource,
final AbstractCaptureWebsitesResource abstractCaptureWebsitesResource, final AbstractMergeFilesResource abstractMergeFilesResource,
- final AbstractCreateArchivesResource abstractCreateArchivesResource, final AbstractExecuteCommandsResource abstractExecuteCommandsResource
+ final AbstractCreateArchivesResource abstractCreateArchivesResource, final AbstractExecuteCommandsResource abstractExecuteCommandsResource,
+ final AbstractCreateThumbnailsResource abstractCreateThumbnailsResource, final AbstractGetMetadataResource abstractGetMetadataResourceResource,
+ final AbstractWriteMetadataResource abstractWriteMetadataResourceResource, final AbstractAddWatermarkResource abstractAddWatermarkResource
) {
super(settingsProvider, objectMapperProvider);
@@ -82,6 +93,10 @@ public AbstractTasksResource(
this.abstractMergeFilesResource = abstractMergeFilesResource;
this.abstractCreateArchivesResource = abstractCreateArchivesResource;
this.abstractExecuteCommandsResource = abstractExecuteCommandsResource;
+ this.abstractCreateThumbnailsResource = abstractCreateThumbnailsResource;
+ this.abstractGetMetadataResource = abstractGetMetadataResourceResource;
+ this.abstractWriteMetadataResource = abstractWriteMetadataResourceResource;
+ this.abstractAddWatermarkResource = abstractAddWatermarkResource;
this.includesToNameValuePairsConverter = new IncludesToNameValuePairsConverter();
this.filtersToNameValuePairsConverter = new FiltersToNameValuePairsConverter();
@@ -99,7 +114,7 @@ public AbstractTasksResource(
*/
public abstract TRAR show(
@NotNull final String taskId
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
/**
* Show a task. Requires the task.read scope.
@@ -112,7 +127,7 @@ public abstract TRAR show(
*/
public abstract TRAR show(
@NotNull final String taskId, @NotNull final List includes
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
protected HttpUriRequest getShowHttpUriRequest(
@NotNull final String taskId, @NotNull final List includes
@@ -140,12 +155,12 @@ protected HttpUriRequest getShowHttpUriRequest(
*/
public abstract TRAR wait(
@NotNull final String taskId
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
protected HttpUriRequest getWaitHttpUriRequest(
@NotNull final String taskId
) throws URISyntaxException {
- final URI uri = getUri(ImmutableList.of(PATH_SEGMENT_TASKS, taskId, PATH_SEGMENT_WAIT));
+ final URI uri = getSyncUri(ImmutableList.of(PATH_SEGMENT_TASKS, taskId));
return getHttpUriRequest(HttpGet.class, uri);
}
@@ -157,7 +172,7 @@ protected HttpUriRequest getWaitHttpUriRequest(
* @throws IOException
* @throws URISyntaxException
*/
- public abstract TRPAR list() throws IOException, URISyntaxException;
+ public abstract TRPAR list() throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
/**
* List all tasks with their status, payload and result. Requires the task.read scope.
@@ -172,7 +187,7 @@ protected HttpUriRequest getWaitHttpUriRequest(
*/
public abstract TRPAR list(
@NotNull final Map filters
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
/**
* List all tasks with their status, payload and result. Requires the task.read scope.
@@ -188,7 +203,7 @@ public abstract TRPAR list(
*/
public abstract TRPAR list(
@NotNull final Map filters, @NotNull final List includes
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
/**
* List all tasks with their status, payload and result. Requires the task.read scope.
@@ -207,7 +222,7 @@ public abstract TRPAR list(
*/
public abstract TRPAR list(
@NotNull final Map filters, @NotNull final List includes, @Nullable final Pagination pagination
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
protected HttpUriRequest getListHttpUriRequest(
@NotNull final Map filters, @NotNull final List includes, @Nullable final Pagination pagination
@@ -230,7 +245,7 @@ protected HttpUriRequest getListHttpUriRequest(
*/
public abstract TRAR cancel(
@NotNull final String taskId
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
protected HttpUriRequest getCancelHttpUriRequest(
@NotNull final String taskId
@@ -250,7 +265,7 @@ protected HttpUriRequest getCancelHttpUriRequest(
*/
public abstract TRAR retry(
@NotNull final String taskId
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
protected HttpUriRequest getRetryHttpUriRequest(
@NotNull final String taskId
@@ -271,7 +286,7 @@ protected HttpUriRequest getRetryHttpUriRequest(
*/
public abstract VAR delete(
@NotNull final String taskId
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
protected HttpUriRequest getDeleteHttpUriRequest(
@NotNull final String taskId
@@ -288,7 +303,7 @@ protected HttpUriRequest getDeleteHttpUriRequest(
* @throws IOException
* @throws URISyntaxException
*/
- public abstract ORPAR operations() throws IOException, URISyntaxException;
+ public abstract ORPAR operations() throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
/**
* List all possible operations, formats, engines and possible options.
@@ -305,7 +320,7 @@ protected HttpUriRequest getDeleteHttpUriRequest(
*/
public abstract ORPAR operations(
@NotNull final Map filters
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
/**
* List all possible operations, formats, engines and possible options.
@@ -323,7 +338,7 @@ public abstract ORPAR operations(
*/
public abstract ORPAR operations(
@NotNull final Map filters, @NotNull final List includes
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
/**
* List all possible operations, formats, engines and possible options.
@@ -343,7 +358,7 @@ public abstract ORPAR operations(
*/
public abstract ORPAR operations(
@NotNull final Map filters, @NotNull final List includes, @Nullable final Boolean alternative
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
protected HttpUriRequest getOperationsHttpUriRequest(
@NotNull final Map filters, @NotNull final List includes, @Nullable final Boolean alternative
@@ -366,7 +381,7 @@ protected HttpUriRequest getOperationsHttpUriRequest(
*/
public abstract TRAR convert(
@NotNull final ConvertFilesTaskRequest convertFilesTaskRequest
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
/**
* List all supported formats, their engines and possible options.
@@ -375,7 +390,7 @@ public abstract TRAR convert(
* @throws IOException
* @throws URISyntaxException
*/
- public abstract ORPAR convertFormats() throws IOException, URISyntaxException;
+ public abstract ORPAR convertFormats() throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
/**
* List all supported formats, their engines and possible options.
@@ -391,7 +406,7 @@ public abstract TRAR convert(
*/
public abstract ORPAR convertFormats(
@NotNull final Map filters
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
/**
* List all supported formats, their engines and possible options.
@@ -408,7 +423,7 @@ public abstract ORPAR convertFormats(
*/
public abstract ORPAR convertFormats(
@NotNull final Map filters, @NotNull final List includes
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
/**
* List all supported formats, their engines and possible options.
@@ -427,7 +442,7 @@ public abstract ORPAR convertFormats(
*/
public abstract ORPAR convertFormats(
@NotNull final Map filters, @NotNull final List includes, @Nullable final Boolean alternative
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
/**
* Create a task to optimize and compress a file. Currently supported formats are PDF, PNG and JPG.
@@ -439,7 +454,7 @@ public abstract ORPAR convertFormats(
*/
public abstract TRAR optimize(
@NotNull final OptimizeFilesTaskRequest optimizeFilesTaskRequest
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
/**
* Create a task to convert a website to PDF or to capture a screenshot of a website (png, jpg).
@@ -451,7 +466,7 @@ public abstract TRAR optimize(
*/
public abstract TRAR capture(
@NotNull final CaptureWebsitesTaskRequest captureWebsitesTaskRequest
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
/**
* Create a task to merge at least two files to one PDF. If input files are not PDFs yet, they are automatically converted to PDF.
@@ -463,7 +478,7 @@ public abstract TRAR capture(
*/
public abstract TRAR merge(
@NotNull final MergeFilesTaskRequest mergeFilesTaskRequest
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
/**
* Create a task to create a ZIP, RAR, 7Z, TAR, TAR.GZ or TAR.BZ2 archive.
@@ -475,7 +490,7 @@ public abstract TRAR merge(
*/
public abstract TRAR archive(
@NotNull final CreateArchivesTaskRequest createArchivesTaskRequest
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
/**
* Create a task to execute a command. Currently, ffmpeg, imagemagick and graphicsmagick commands re supported.
@@ -489,7 +504,59 @@ public abstract TRAR archive(
*/
public abstract TRAR command(
@NotNull final ExecuteCommandsTaskRequest executeCommandsTaskRequest
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
+
+ /**
+ * Create a task to create a thumbnail of one file. Requires the task.write scope.
+ *
+ * @param createThumbnailsTaskRequest {@link CreateThumbnailsTaskRequest}
+ * @return {@link TRAR}
+ * @throws IOException
+ * @throws URISyntaxException
+ */
+ public abstract TRAR thumbnail(
+ @NotNull final CreateThumbnailsTaskRequest createThumbnailsTaskRequest
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
+
+
+ /**
+ * Create a task to extract metadata from one file. Requires the task.write scope.
+ *
+ * @param getMetadataTaskRequest {@link GetMetadataTaskRequest}
+ * @return {@link TRAR}
+ * @throws IOException
+ * @throws URISyntaxException
+ */
+ public abstract TRAR metadata(
+ @NotNull final GetMetadataTaskRequest getMetadataTaskRequest
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
+
+
+ /**
+ * Create a task to write file metadata.
+ *
+ * @param writeMetadataTaskRequest {@link WriteMetadataTaskRequest}
+ * @return {@link TRAR}
+ * @throws IOException
+ * @throws URISyntaxException
+ */
+ public abstract TRAR writeMetadata(
+ @NotNull final WriteMetadataTaskRequest writeMetadataTaskRequest
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
+
+
+ /**
+ * Create a task to add a watermark to a file. Requires the task.write scope.
+ *
+ * @param addWatermarkTaskRequest {@link AddWatermarkTaskRequest}
+ * @return {@link TRAR}
+ * @throws IOException
+ * @throws URISyntaxException
+ */
+ public abstract TRAR watermark(
+ @NotNull final AddWatermarkTaskRequest addWatermarkTaskRequest
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
+
@Override
public void close() throws IOException {
@@ -499,5 +566,9 @@ public void close() throws IOException {
abstractMergeFilesResource.close();
abstractCreateArchivesResource.close();
abstractExecuteCommandsResource.close();
+ abstractCreateThumbnailsResource.close();
+ abstractGetMetadataResource.close();
+ abstractWriteMetadataResource.close();
+ abstractAddWatermarkResource.close();
}
}
diff --git a/src/main/java/com/cloudconvert/resource/AbstractUsersResource.java b/src/main/java/com/cloudconvert/resource/AbstractUsersResource.java
index 52921e2..ddbb6c9 100644
--- a/src/main/java/com/cloudconvert/resource/AbstractUsersResource.java
+++ b/src/main/java/com/cloudconvert/resource/AbstractUsersResource.java
@@ -4,6 +4,8 @@
import com.cloudconvert.client.setttings.SettingsProvider;
import com.cloudconvert.dto.response.UserResponse;
import com.cloudconvert.dto.result.AbstractResult;
+import com.cloudconvert.exception.CloudConvertClientException;
+import com.cloudconvert.exception.CloudConvertServerException;
import com.google.common.collect.ImmutableList;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpUriRequest;
@@ -30,7 +32,7 @@ public AbstractUsersResource(
* @throws IOException
* @throws URISyntaxException
*/
- public abstract URAR me() throws IOException, URISyntaxException;
+ public abstract URAR me() throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
protected HttpUriRequest getMeHttpUriRequest() throws URISyntaxException {
final URI uri = getUri(ImmutableList.of(PATH_SEGMENT_USERS, PATH_SEGMENT_ME));
diff --git a/src/main/java/com/cloudconvert/resource/AbstractWebhooksResource.java b/src/main/java/com/cloudconvert/resource/AbstractWebhooksResource.java
index 4ae4f45..e72cc25 100644
--- a/src/main/java/com/cloudconvert/resource/AbstractWebhooksResource.java
+++ b/src/main/java/com/cloudconvert/resource/AbstractWebhooksResource.java
@@ -6,6 +6,8 @@
import com.cloudconvert.dto.response.Pageable;
import com.cloudconvert.dto.response.WebhookResponse;
import com.cloudconvert.dto.result.AbstractResult;
+import com.cloudconvert.exception.CloudConvertClientException;
+import com.cloudconvert.exception.CloudConvertServerException;
import com.cloudconvert.resource.params.Filter;
import com.cloudconvert.resource.params.Pagination;
import com.cloudconvert.resource.params.converter.FiltersToNameValuePairsConverter;
@@ -60,7 +62,7 @@ public AbstractWebhooksResource(
*/
public abstract WRAR create(
@NotNull final WebhookRequest webhookRequest
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
protected HttpUriRequest getCreateHttpUriRequest(
@NotNull final WebhookRequest webhookRequest
@@ -77,7 +79,7 @@ protected HttpUriRequest getCreateHttpUriRequest(
* @throws IOException
* @throws URISyntaxException
*/
- public abstract WRPAR list() throws IOException, URISyntaxException;
+ public abstract WRPAR list() throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
/**
* List all webhooks. Requires the webhook.read scope.
@@ -90,7 +92,7 @@ protected HttpUriRequest getCreateHttpUriRequest(
*/
public abstract WRPAR list(
@NotNull final Map filters
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
/**
* List all webhooks. Requires the webhook.read scope.
@@ -106,7 +108,7 @@ public abstract WRPAR list(
*/
public abstract WRPAR list(
@NotNull final Map filters, @Nullable final Pagination pagination
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
protected HttpUriRequest getListHttpUriRequest(
@NotNull final Map filters, @Nullable final Pagination pagination
@@ -131,7 +133,7 @@ protected HttpUriRequest getListHttpUriRequest(
*/
public abstract VAR delete(
@NotNull final String webhookId
- ) throws IOException, URISyntaxException;
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
protected HttpUriRequest getDeleteHttpUriRequest(
@NotNull final String webhookId
diff --git a/src/main/java/com/cloudconvert/resource/AbstractWriteMetadataResource.java b/src/main/java/com/cloudconvert/resource/AbstractWriteMetadataResource.java
new file mode 100644
index 0000000..77bd797
--- /dev/null
+++ b/src/main/java/com/cloudconvert/resource/AbstractWriteMetadataResource.java
@@ -0,0 +1,51 @@
+package com.cloudconvert.resource;
+
+import com.cloudconvert.client.mapper.ObjectMapperProvider;
+import com.cloudconvert.client.setttings.SettingsProvider;
+import com.cloudconvert.dto.request.WriteMetadataTaskRequest;
+import com.cloudconvert.dto.response.TaskResponse;
+import com.cloudconvert.dto.result.AbstractResult;
+import com.cloudconvert.exception.CloudConvertClientException;
+import com.cloudconvert.exception.CloudConvertServerException;
+import com.google.common.collect.ImmutableList;
+import org.apache.http.HttpEntity;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.client.methods.HttpUriRequest;
+import org.jetbrains.annotations.NotNull;
+
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+
+public abstract class AbstractWriteMetadataResource> extends AbstractResource {
+
+ public static final String PATH_SEGMENT_METADATA = "metadata";
+ public static final String PATH_SEGMENT_WRITE = "write";
+
+ public AbstractWriteMetadataResource(
+ final SettingsProvider settingsProvider, final ObjectMapperProvider objectMapperProvider
+ ) {
+ super(settingsProvider, objectMapperProvider);
+ }
+
+ /**
+ * Create a task to write file metadata.
+ *
+ * @param writeMetadataTaskRequest {@link WriteMetadataTaskRequest}
+ * @return {@link TRAR}
+ * @throws IOException
+ * @throws URISyntaxException
+ */
+ public abstract TRAR writeMetadata(
+ @NotNull final WriteMetadataTaskRequest writeMetadataTaskRequest
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
+
+ protected HttpUriRequest getWriteMetadataHttpUriRequest(
+ @NotNull final WriteMetadataTaskRequest writeMetadataTaskRequest
+ ) throws IOException, URISyntaxException {
+ final URI uri = getUri(ImmutableList.of(PATH_SEGMENT_METADATA, PATH_SEGMENT_WRITE));
+ final HttpEntity httpEntity = getHttpEntity(writeMetadataTaskRequest);
+
+ return getHttpUriRequest(HttpPost.class, uri, httpEntity);
+ }
+}
diff --git a/src/main/java/com/cloudconvert/resource/async/AsyncAddWatermarkResource.java b/src/main/java/com/cloudconvert/resource/async/AsyncAddWatermarkResource.java
new file mode 100644
index 0000000..4a12598
--- /dev/null
+++ b/src/main/java/com/cloudconvert/resource/async/AsyncAddWatermarkResource.java
@@ -0,0 +1,41 @@
+package com.cloudconvert.resource.async;
+
+import com.cloudconvert.client.mapper.ObjectMapperProvider;
+import com.cloudconvert.client.setttings.SettingsProvider;
+import com.cloudconvert.dto.request.AddWatermarkTaskRequest;
+import com.cloudconvert.dto.response.TaskResponse;
+import com.cloudconvert.dto.result.AsyncResult;
+import com.cloudconvert.executor.AsyncRequestExecutor;
+import com.cloudconvert.resource.AbstractAddWatermarkResource;
+import lombok.extern.slf4j.Slf4j;
+import org.jetbrains.annotations.NotNull;
+
+import java.io.IOException;
+import java.net.URISyntaxException;
+
+@Slf4j
+public class AsyncAddWatermarkResource extends AbstractAddWatermarkResource> {
+
+ private final AsyncRequestExecutor asyncRequestExecutor;
+
+ public AsyncAddWatermarkResource(
+ final SettingsProvider settingsProvider,
+ final ObjectMapperProvider objectMapperProvider, final AsyncRequestExecutor asyncRequestExecutor
+ ) {
+ super(settingsProvider, objectMapperProvider);
+
+ this.asyncRequestExecutor = asyncRequestExecutor;
+ }
+
+ @Override
+ public AsyncResult watermark(
+ @NotNull final AddWatermarkTaskRequest addWatermarkTaskRequest
+ ) throws IOException, URISyntaxException {
+ return asyncRequestExecutor.execute(getWatermarkHttpUriRequest(addWatermarkTaskRequest), TASK_RESPONSE_TYPE_REFERENCE);
+ }
+
+ @Override
+ public void close() throws IOException {
+ asyncRequestExecutor.close();
+ }
+}
diff --git a/src/main/java/com/cloudconvert/resource/async/AsyncCreateThumbnailsResource.java b/src/main/java/com/cloudconvert/resource/async/AsyncCreateThumbnailsResource.java
new file mode 100644
index 0000000..a5501f6
--- /dev/null
+++ b/src/main/java/com/cloudconvert/resource/async/AsyncCreateThumbnailsResource.java
@@ -0,0 +1,41 @@
+package com.cloudconvert.resource.async;
+
+import com.cloudconvert.client.mapper.ObjectMapperProvider;
+import com.cloudconvert.client.setttings.SettingsProvider;
+import com.cloudconvert.dto.request.CreateThumbnailsTaskRequest;
+import com.cloudconvert.dto.response.TaskResponse;
+import com.cloudconvert.dto.result.AsyncResult;
+import com.cloudconvert.executor.AsyncRequestExecutor;
+import com.cloudconvert.resource.AbstractCreateThumbnailsResource;
+import lombok.extern.slf4j.Slf4j;
+import org.jetbrains.annotations.NotNull;
+
+import java.io.IOException;
+import java.net.URISyntaxException;
+
+@Slf4j
+public class AsyncCreateThumbnailsResource extends AbstractCreateThumbnailsResource> {
+
+ private final AsyncRequestExecutor asyncRequestExecutor;
+
+ public AsyncCreateThumbnailsResource(
+ final SettingsProvider settingsProvider,
+ final ObjectMapperProvider objectMapperProvider, final AsyncRequestExecutor asyncRequestExecutor
+ ) {
+ super(settingsProvider, objectMapperProvider);
+
+ this.asyncRequestExecutor = asyncRequestExecutor;
+ }
+
+ @Override
+ public AsyncResult thumbnail(
+ @NotNull final CreateThumbnailsTaskRequest createThumbnailsTaskRequest
+ ) throws IOException, URISyntaxException {
+ return asyncRequestExecutor.execute(getThumbnailHttpUriRequest(createThumbnailsTaskRequest), TASK_RESPONSE_TYPE_REFERENCE);
+ }
+
+ @Override
+ public void close() throws IOException {
+ asyncRequestExecutor.close();
+ }
+}
diff --git a/src/main/java/com/cloudconvert/resource/async/AsyncGetMetadataResource.java b/src/main/java/com/cloudconvert/resource/async/AsyncGetMetadataResource.java
new file mode 100644
index 0000000..fcb35cd
--- /dev/null
+++ b/src/main/java/com/cloudconvert/resource/async/AsyncGetMetadataResource.java
@@ -0,0 +1,41 @@
+package com.cloudconvert.resource.async;
+
+import com.cloudconvert.client.mapper.ObjectMapperProvider;
+import com.cloudconvert.client.setttings.SettingsProvider;
+import com.cloudconvert.dto.request.GetMetadataTaskRequest;
+import com.cloudconvert.dto.response.TaskResponse;
+import com.cloudconvert.dto.result.AsyncResult;
+import com.cloudconvert.executor.AsyncRequestExecutor;
+import com.cloudconvert.resource.AbstractGetMetadataResource;
+import lombok.extern.slf4j.Slf4j;
+import org.jetbrains.annotations.NotNull;
+
+import java.io.IOException;
+import java.net.URISyntaxException;
+
+@Slf4j
+public class AsyncGetMetadataResource extends AbstractGetMetadataResource> {
+
+ private final AsyncRequestExecutor asyncRequestExecutor;
+
+ public AsyncGetMetadataResource(
+ final SettingsProvider settingsProvider,
+ final ObjectMapperProvider objectMapperProvider, final AsyncRequestExecutor asyncRequestExecutor
+ ) {
+ super(settingsProvider, objectMapperProvider);
+
+ this.asyncRequestExecutor = asyncRequestExecutor;
+ }
+
+ @Override
+ public AsyncResult metadata(
+ @NotNull final GetMetadataTaskRequest getMetadataTaskRequest
+ ) throws IOException, URISyntaxException {
+ return asyncRequestExecutor.execute(getMetadataHttpUriRequest(getMetadataTaskRequest), TASK_RESPONSE_TYPE_REFERENCE);
+ }
+
+ @Override
+ public void close() throws IOException {
+ asyncRequestExecutor.close();
+ }
+}
diff --git a/src/main/java/com/cloudconvert/resource/async/AsyncImportFilesResource.java b/src/main/java/com/cloudconvert/resource/async/AsyncImportFilesResource.java
index ae02d48..7472b53 100644
--- a/src/main/java/com/cloudconvert/resource/async/AsyncImportFilesResource.java
+++ b/src/main/java/com/cloudconvert/resource/async/AsyncImportFilesResource.java
@@ -3,8 +3,10 @@
import com.cloudconvert.client.mapper.ObjectMapperProvider;
import com.cloudconvert.client.setttings.SettingsProvider;
import com.cloudconvert.dto.request.AzureBlobImportRequest;
+import com.cloudconvert.dto.request.Base64ImportRequest;
import com.cloudconvert.dto.request.GoogleCloudStorageImportRequest;
import com.cloudconvert.dto.request.OpenStackImportRequest;
+import com.cloudconvert.dto.request.RawImportRequest;
import com.cloudconvert.dto.request.S3ImportRequest;
import com.cloudconvert.dto.request.SftpImportRequest;
import com.cloudconvert.dto.request.UploadImportRequest;
@@ -13,6 +15,8 @@
import com.cloudconvert.dto.result.AsyncResult;
import com.cloudconvert.dto.result.CompletedAsyncResult;
import com.cloudconvert.dto.result.Result;
+import com.cloudconvert.exception.CloudConvertClientException;
+import com.cloudconvert.exception.CloudConvertServerException;
import com.cloudconvert.executor.AsyncRequestExecutor;
import com.cloudconvert.resource.AbstractImportFilesResource;
import com.google.common.collect.ImmutableList;
@@ -69,24 +73,23 @@ public AsyncResult upload(
@Override
public AsyncResult upload(
@NotNull final UploadImportRequest uploadImportRequest, @NotNull final File file
- ) throws IOException, URISyntaxException {
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException {
return upload(upload(uploadImportRequest), file);
}
@Override
public AsyncResult upload(
- @NotNull final AsyncResult TaskResponseAsyncResult, @NotNull final File file
- ) throws IOException, URISyntaxException {
+ @NotNull final AsyncResult taskResponseAsyncResult, @NotNull final File file
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException {
try {
- final Result TaskResponseResult = TaskResponseAsyncResult.get();
+ final Result taskResponseResult = taskResponseAsyncResult.get();
- if (HttpStatus.SC_CREATED == TaskResponseResult.getStatus()) {
- final TaskResponse taskResponse = TaskResponseResult.getBody();
+ if (HttpStatus.SC_CREATED == taskResponseResult.getStatus().getCode()) {
+ final TaskResponse taskResponse = taskResponseResult.getBody();
return upload(taskResponse.getId(), taskResponse.getResult().getForm(), file);
} else {
- return CompletedAsyncResult.builder().result(Result.builder()
- .status(TaskResponseResult.getStatus()).message(TaskResponseResult.getMessage()).build()).build();
+ return CompletedAsyncResult.builder().result(taskResponseResult).build();
}
} catch (InterruptedException | ExecutionException e) {
throw new IOException(e);
@@ -96,12 +99,12 @@ public AsyncResult upload(
@Override
public AsyncResult upload(
@NotNull final String taskId, @NotNull final TaskResponse.Result.Form taskResponseResultForm, @NotNull final File file
- ) throws IOException, URISyntaxException {
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException {
try {
final URI multipartUri = new URI(taskResponseResultForm.getUrl());
final HttpEntity multipartHttpEntity = getMultipartHttpEntity(taskResponseResultForm, file);
final HttpUriRequest multipartHttpUriRequest = getHttpUriRequest(HttpPost.class, multipartUri, multipartHttpEntity);
-
+ multipartHttpUriRequest.removeHeaders(HEADER_AUTHORIZATION);
return uploadPostProcess(taskId, asyncRequestExecutor.execute(multipartHttpUriRequest, VOID_TYPE_REFERENCE));
} catch (InterruptedException | ExecutionException e) {
throw new IOException(e);
@@ -111,24 +114,49 @@ public AsyncResult upload(
@Override
public AsyncResult upload(
@NotNull final UploadImportRequest uploadImportRequest, @NotNull final InputStream inputStream
- ) throws IOException, URISyntaxException {
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException {
return upload(upload(uploadImportRequest), inputStream);
}
@Override
public AsyncResult upload(
- @NotNull final AsyncResult TaskResponseAsyncResult, @NotNull final InputStream inputStream
- ) throws IOException, URISyntaxException {
+ @NotNull UploadImportRequest uploadImportRequest, @NotNull InputStream inputStream, @NotNull String filename
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException {
+ return upload(upload(uploadImportRequest), inputStream, filename);
+ }
+
+ @Override
+ public AsyncResult upload(
+ @NotNull final AsyncResult taskResponseAsyncResult, @NotNull final InputStream inputStream
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException {
try {
- final Result TaskResponseResult = TaskResponseAsyncResult.get();
+ final Result taskResponseResult = taskResponseAsyncResult.get();
- if (HttpStatus.SC_CREATED == TaskResponseResult.getStatus()) {
- final TaskResponse taskResponse = TaskResponseResult.getBody();
+ if (HttpStatus.SC_CREATED == taskResponseResult.getStatus().getCode()) {
+ final TaskResponse taskResponse = taskResponseResult.getBody();
return upload(taskResponse.getId(), taskResponse.getResult().getForm(), inputStream);
} else {
- return CompletedAsyncResult.builder().result(Result.builder()
- .status(TaskResponseResult.getStatus()).message(TaskResponseResult.getMessage()).build()).build();
+ return CompletedAsyncResult.builder().result(taskResponseResult).build();
+ }
+ } catch (InterruptedException | ExecutionException e) {
+ throw new IOException(e);
+ }
+ }
+
+ @Override
+ public AsyncResult upload(
+ @NotNull AsyncResult taskResponseAsyncResult, @NotNull InputStream inputStream, @NotNull String filename
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException {
+ try {
+ final Result taskResponseResult = taskResponseAsyncResult.get();
+
+ if (HttpStatus.SC_CREATED == taskResponseResult.getStatus().getCode()) {
+ final TaskResponse taskResponse = taskResponseResult.getBody();
+
+ return upload(taskResponse.getId(), taskResponse.getResult().getForm(), inputStream, filename);
+ } else {
+ return CompletedAsyncResult.builder().result(taskResponseResult).build();
}
} catch (InterruptedException | ExecutionException e) {
throw new IOException(e);
@@ -138,12 +166,27 @@ public AsyncResult upload(
@Override
public AsyncResult upload(
@NotNull final String taskId, @NotNull final TaskResponse.Result.Form taskResponseResultForm, @NotNull final InputStream inputStream
- ) throws IOException, URISyntaxException {
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException {
try {
final URI multipartUri = new URI(taskResponseResultForm.getUrl());
final HttpEntity multipartHttpEntity = getMultipartHttpEntity(taskResponseResultForm, inputStream);
final HttpUriRequest multipartHttpUriRequest = getHttpUriRequest(HttpPost.class, multipartUri, multipartHttpEntity);
+ multipartHttpUriRequest.removeHeaders(HEADER_AUTHORIZATION);
+ return uploadPostProcess(taskId, asyncRequestExecutor.execute(multipartHttpUriRequest, VOID_TYPE_REFERENCE));
+ } catch (InterruptedException | ExecutionException e) {
+ throw new IOException(e);
+ }
+ }
+ @Override
+ public AsyncResult upload(
+ @NotNull String taskId, TaskResponse.Result.@NotNull Form taskResponseResultForm, @NotNull InputStream inputStream, @NotNull String filename
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException {
+ try {
+ final URI multipartUri = new URI(taskResponseResultForm.getUrl());
+ final HttpEntity multipartHttpEntity = getMultipartHttpEntity(taskResponseResultForm, filename, inputStream);
+ final HttpUriRequest multipartHttpUriRequest = getHttpUriRequest(HttpPost.class, multipartUri, multipartHttpEntity);
+ multipartHttpUriRequest.removeHeaders(HEADER_AUTHORIZATION);
return uploadPostProcess(taskId, asyncRequestExecutor.execute(multipartHttpUriRequest, VOID_TYPE_REFERENCE));
} catch (InterruptedException | ExecutionException e) {
throw new IOException(e);
@@ -152,27 +195,27 @@ public AsyncResult upload(
private AsyncResult uploadPostProcess(
final String taskId, final AsyncResult multipartVoidAsyncResult
- ) throws IOException, URISyntaxException, InterruptedException, ExecutionException {
+ ) throws IOException, URISyntaxException, InterruptedException, ExecutionException, CloudConvertClientException, CloudConvertServerException {
final Result multipartVoidResult = multipartVoidAsyncResult.get();
- if (HttpStatus.SC_CREATED == multipartVoidResult.getStatus()) {
+ if (HttpStatus.SC_CREATED == multipartVoidResult.getStatus().getCode()) {
return asyncTasksResource.show(taskId);
- } else if (HttpStatus.SC_SEE_OTHER == multipartVoidResult.getStatus()) {
+ } else if (HttpStatus.SC_SEE_OTHER == multipartVoidResult.getStatus().getCode()) {
final URI redirectUri = new URI(multipartVoidResult.getHeaders().get("Location"));
final HttpUriRequest redirectHttpUriRequest = getHttpUriRequest(HttpGet.class, redirectUri);
final AsyncResult redirectVoidAsyncResult = asyncRequestExecutor.execute(redirectHttpUriRequest, VOID_TYPE_REFERENCE);
final Result redirectVoidResult = redirectVoidAsyncResult.get();
- if (HttpStatus.SC_CREATED == redirectVoidResult.getStatus()) {
+ if (HttpStatus.SC_CREATED == redirectVoidResult.getStatus().getCode()) {
return asyncTasksResource.show(taskId);
} else {
- return CompletedAsyncResult.builder().result(Result.builder()
- .status(redirectVoidResult.getStatus()).message(redirectVoidResult.getMessage()).build()).build();
+ return CompletedAsyncResult.builder()
+ .result(Result.builder().status(redirectVoidResult.getStatus()).headers(redirectVoidResult.getHeaders()).build()).build();
}
} else {
- return CompletedAsyncResult.builder().result(Result.builder()
- .status(multipartVoidResult.getStatus()).message(multipartVoidResult.getMessage()).build()).build();
+ return CompletedAsyncResult.builder()
+ .result(Result.builder().status(multipartVoidResult.getStatus()).headers(multipartVoidResult.getHeaders()).build()).build();
}
}
@@ -211,6 +254,16 @@ public AsyncResult sftp(
return asyncRequestExecutor.execute(getSftpHttpUriRequest(sftpImportRequest), TASK_RESPONSE_TYPE_REFERENCE);
}
+ @Override
+ public AsyncResult base64(@NotNull final Base64ImportRequest base64ImportRequest) throws IOException, URISyntaxException {
+ return asyncRequestExecutor.execute(getBase64HttpUriRequest(base64ImportRequest), TASK_RESPONSE_TYPE_REFERENCE);
+ }
+
+ @Override
+ public AsyncResult raw(@NotNull final RawImportRequest rawImportRequest) throws IOException, URISyntaxException {
+ return asyncRequestExecutor.execute(getRawHttpUriRequest(rawImportRequest), TASK_RESPONSE_TYPE_REFERENCE);
+ }
+
@Override
public void close() throws IOException {
asyncRequestExecutor.close();
diff --git a/src/main/java/com/cloudconvert/resource/async/AsyncSignedUrlResource.java b/src/main/java/com/cloudconvert/resource/async/AsyncSignedUrlResource.java
new file mode 100644
index 0000000..a7a80c0
--- /dev/null
+++ b/src/main/java/com/cloudconvert/resource/async/AsyncSignedUrlResource.java
@@ -0,0 +1,29 @@
+package com.cloudconvert.resource.async;
+
+import com.cloudconvert.client.mapper.ObjectMapperProvider;
+import com.cloudconvert.client.setttings.SettingsProvider;
+import com.cloudconvert.executor.AsyncRequestExecutor;
+import com.cloudconvert.resource.AbstractSignedUrlResource;
+
+
+import java.io.IOException;
+
+
+public class AsyncSignedUrlResource extends AbstractSignedUrlResource {
+
+ private final AsyncRequestExecutor asyncRequestExecutor;
+
+ public AsyncSignedUrlResource(
+ final SettingsProvider settingsProvider,
+ final ObjectMapperProvider objectMapperProvider, final AsyncRequestExecutor asyncRequestExecutor
+ ) {
+ super(settingsProvider, objectMapperProvider);
+
+ this.asyncRequestExecutor = asyncRequestExecutor;
+ }
+
+ @Override
+ public void close() throws IOException {
+ asyncRequestExecutor.close();
+ }
+}
diff --git a/src/main/java/com/cloudconvert/resource/async/AsyncTasksResource.java b/src/main/java/com/cloudconvert/resource/async/AsyncTasksResource.java
index 4281342..8b4ea1d 100644
--- a/src/main/java/com/cloudconvert/resource/async/AsyncTasksResource.java
+++ b/src/main/java/com/cloudconvert/resource/async/AsyncTasksResource.java
@@ -2,16 +2,13 @@
import com.cloudconvert.client.mapper.ObjectMapperProvider;
import com.cloudconvert.client.setttings.SettingsProvider;
-import com.cloudconvert.dto.request.CaptureWebsitesTaskRequest;
-import com.cloudconvert.dto.request.ConvertFilesTaskRequest;
-import com.cloudconvert.dto.request.CreateArchivesTaskRequest;
-import com.cloudconvert.dto.request.ExecuteCommandsTaskRequest;
-import com.cloudconvert.dto.request.MergeFilesTaskRequest;
-import com.cloudconvert.dto.request.OptimizeFilesTaskRequest;
+import com.cloudconvert.dto.request.*;
import com.cloudconvert.dto.response.OperationResponse;
import com.cloudconvert.dto.response.Pageable;
import com.cloudconvert.dto.response.TaskResponse;
import com.cloudconvert.dto.result.AsyncResult;
+import com.cloudconvert.exception.CloudConvertClientException;
+import com.cloudconvert.exception.CloudConvertServerException;
import com.cloudconvert.executor.AsyncRequestExecutor;
import com.cloudconvert.resource.AbstractTasksResource;
import com.cloudconvert.resource.params.Filter;
@@ -38,10 +35,12 @@ public AsyncTasksResource(
final SettingsProvider settingsProvider, final ObjectMapperProvider objectMapperProvider, final AsyncRequestExecutor asyncRequestExecutor,
final AsyncConvertFilesResource asyncConvertFilesResource, final AsyncOptimizeFilesResource asyncOptimizeFilesResource,
final AsyncCaptureWebsitesResource asyncCaptureWebsitesResource, final AsyncMergeFilesResource asyncMergeFilesResource,
- final AsyncCreateArchivesResource asyncCreateArchivesResource, final AsyncExecuteCommandsResource asyncExecuteCommandsResource
+ final AsyncCreateArchivesResource asyncCreateArchivesResource, final AsyncExecuteCommandsResource asyncExecuteCommandsResource,
+ final AsyncCreateThumbnailsResource asyncCreateThumbnailsResource, final AsyncGetMetadataResource asyncGetMetadataResource,
+ final AsyncWriteMetadataResource asyncWriteMetadataResource, final AsyncAddWatermarkResource asyncAddWatermarkResource
) {
super(settingsProvider, objectMapperProvider, asyncConvertFilesResource, asyncOptimizeFilesResource, asyncCaptureWebsitesResource,
- asyncMergeFilesResource, asyncCreateArchivesResource, asyncExecuteCommandsResource);
+ asyncMergeFilesResource, asyncCreateArchivesResource, asyncExecuteCommandsResource, asyncCreateThumbnailsResource, asyncGetMetadataResource, asyncWriteMetadataResource, asyncAddWatermarkResource);
this.asyncRequestExecutor = asyncRequestExecutor;
}
@@ -131,71 +130,99 @@ public AsyncResult> operations(
@Override
public AsyncResult convert(
@NotNull final ConvertFilesTaskRequest convertFilesTaskRequest
- ) throws IOException, URISyntaxException {
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException {
return getAbstractConvertFilesResource().convert(convertFilesTaskRequest);
}
@Override
- public AsyncResult> convertFormats() throws IOException, URISyntaxException {
+ public AsyncResult> convertFormats() throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException {
return getAbstractConvertFilesResource().convertFormats();
}
@Override
public AsyncResult> convertFormats(
@NotNull final Map filters
- ) throws IOException, URISyntaxException {
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException {
return getAbstractConvertFilesResource().convertFormats(filters);
}
@Override
public AsyncResult> convertFormats(
@NotNull final Map filters, @NotNull final List includes
- ) throws IOException, URISyntaxException {
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException {
return getAbstractConvertFilesResource().convertFormats(filters, includes);
}
@Override
public AsyncResult> convertFormats(
@NotNull final Map filters, @NotNull final List includes, @Nullable final Boolean alternative
- ) throws IOException, URISyntaxException {
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException {
return getAbstractConvertFilesResource().convertFormats(filters, includes, alternative);
}
@Override
public AsyncResult optimize(
@NotNull final OptimizeFilesTaskRequest optimizeFilesTaskRequest
- ) throws IOException, URISyntaxException {
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException {
return getAbstractOptimizeFilesResource().optimize(optimizeFilesTaskRequest);
}
@Override
public AsyncResult capture(
@NotNull final CaptureWebsitesTaskRequest captureWebsitesTaskRequest
- ) throws IOException, URISyntaxException {
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException {
return getAbstractCaptureWebsitesResource().capture(captureWebsitesTaskRequest);
}
@Override
public AsyncResult merge(
@NotNull final MergeFilesTaskRequest mergeFilesTaskRequest
- ) throws IOException, URISyntaxException {
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException {
return getAbstractMergeFilesResource().merge(mergeFilesTaskRequest);
}
@Override
public AsyncResult archive(
@NotNull final CreateArchivesTaskRequest createArchivesTaskRequest
- ) throws IOException, URISyntaxException {
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException {
return getAbstractCreateArchivesResource().archive(createArchivesTaskRequest);
}
@Override
public AsyncResult command(
@NotNull final ExecuteCommandsTaskRequest executeCommandsTaskRequest
- ) throws IOException, URISyntaxException {
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException {
return getAbstractExecuteCommandsResource().command(executeCommandsTaskRequest);
}
+ @Override
+ public AsyncResult thumbnail(
+ @NotNull final CreateThumbnailsTaskRequest createThumbnailsTaskRequest
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException {
+ return getAbstractCreateThumbnailsResource().thumbnail(createThumbnailsTaskRequest);
+ }
+
+ @Override
+ public AsyncResult metadata(
+ @NotNull final GetMetadataTaskRequest getMetadataTaskRequest
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException {
+ return getAbstractGetMetadataResource().metadata(getMetadataTaskRequest);
+ }
+
+ @Override
+ public AsyncResult writeMetadata(
+ @NotNull final WriteMetadataTaskRequest writeMetadataTaskRequest
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException {
+ return getAbstractWriteMetadataResource().writeMetadata(writeMetadataTaskRequest);
+ }
+
+ @Override
+ public AsyncResult watermark(
+ @NotNull final AddWatermarkTaskRequest addWatermarkTaskRequest
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException {
+ return getAbstractAddWatermarkResource().watermark(addWatermarkTaskRequest);
+ }
+
@Override
public void close() throws IOException {
asyncRequestExecutor.close();
diff --git a/src/main/java/com/cloudconvert/resource/async/AsyncWriteMetadataResource.java b/src/main/java/com/cloudconvert/resource/async/AsyncWriteMetadataResource.java
new file mode 100644
index 0000000..75e482e
--- /dev/null
+++ b/src/main/java/com/cloudconvert/resource/async/AsyncWriteMetadataResource.java
@@ -0,0 +1,41 @@
+package com.cloudconvert.resource.async;
+
+import com.cloudconvert.client.mapper.ObjectMapperProvider;
+import com.cloudconvert.client.setttings.SettingsProvider;
+import com.cloudconvert.dto.request.WriteMetadataTaskRequest;
+import com.cloudconvert.dto.response.TaskResponse;
+import com.cloudconvert.dto.result.AsyncResult;
+import com.cloudconvert.executor.AsyncRequestExecutor;
+import com.cloudconvert.resource.AbstractWriteMetadataResource;
+import lombok.extern.slf4j.Slf4j;
+import org.jetbrains.annotations.NotNull;
+
+import java.io.IOException;
+import java.net.URISyntaxException;
+
+@Slf4j
+public class AsyncWriteMetadataResource extends AbstractWriteMetadataResource> {
+
+ private final AsyncRequestExecutor asyncRequestExecutor;
+
+ public AsyncWriteMetadataResource(
+ final SettingsProvider settingsProvider,
+ final ObjectMapperProvider objectMapperProvider, final AsyncRequestExecutor asyncRequestExecutor
+ ) {
+ super(settingsProvider, objectMapperProvider);
+
+ this.asyncRequestExecutor = asyncRequestExecutor;
+ }
+
+ @Override
+ public AsyncResult writeMetadata(
+ @NotNull final WriteMetadataTaskRequest writeMetadataTaskRequest
+ ) throws IOException, URISyntaxException {
+ return asyncRequestExecutor.execute(getWriteMetadataHttpUriRequest(writeMetadataTaskRequest), TASK_RESPONSE_TYPE_REFERENCE);
+ }
+
+ @Override
+ public void close() throws IOException {
+ asyncRequestExecutor.close();
+ }
+}
diff --git a/src/main/java/com/cloudconvert/resource/sync/AddWatermarkResource.java b/src/main/java/com/cloudconvert/resource/sync/AddWatermarkResource.java
new file mode 100644
index 0000000..9b0b136
--- /dev/null
+++ b/src/main/java/com/cloudconvert/resource/sync/AddWatermarkResource.java
@@ -0,0 +1,43 @@
+package com.cloudconvert.resource.sync;
+
+import com.cloudconvert.client.mapper.ObjectMapperProvider;
+import com.cloudconvert.client.setttings.SettingsProvider;
+import com.cloudconvert.dto.request.AddWatermarkTaskRequest;
+import com.cloudconvert.dto.response.TaskResponse;
+import com.cloudconvert.dto.result.Result;
+import com.cloudconvert.exception.CloudConvertClientException;
+import com.cloudconvert.exception.CloudConvertServerException;
+import com.cloudconvert.executor.RequestExecutor;
+import com.cloudconvert.resource.AbstractAddWatermarkResource;
+import lombok.extern.slf4j.Slf4j;
+import org.jetbrains.annotations.NotNull;
+
+import java.io.IOException;
+import java.net.URISyntaxException;
+
+@Slf4j
+public class AddWatermarkResource extends AbstractAddWatermarkResource> {
+
+ private final RequestExecutor requestExecutor;
+
+ public AddWatermarkResource(
+ final SettingsProvider settingsProvider,
+ final ObjectMapperProvider objectMapperProvider, final RequestExecutor requestExecutor
+ ) {
+ super(settingsProvider, objectMapperProvider);
+
+ this.requestExecutor = requestExecutor;
+ }
+
+ @Override
+ public Result watermark(
+ @NotNull final AddWatermarkTaskRequest createWatermarkTaskRequest
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException {
+ return requestExecutor.execute(getWatermarkHttpUriRequest(createWatermarkTaskRequest), TASK_RESPONSE_TYPE_REFERENCE);
+ }
+
+ @Override
+ public void close() throws IOException {
+ requestExecutor.close();
+ }
+}
diff --git a/src/main/java/com/cloudconvert/resource/sync/CaptureWebsitesResource.java b/src/main/java/com/cloudconvert/resource/sync/CaptureWebsitesResource.java
index 9ab648f..e503e21 100644
--- a/src/main/java/com/cloudconvert/resource/sync/CaptureWebsitesResource.java
+++ b/src/main/java/com/cloudconvert/resource/sync/CaptureWebsitesResource.java
@@ -5,6 +5,8 @@
import com.cloudconvert.dto.request.CaptureWebsitesTaskRequest;
import com.cloudconvert.dto.response.TaskResponse;
import com.cloudconvert.dto.result.Result;
+import com.cloudconvert.exception.CloudConvertClientException;
+import com.cloudconvert.exception.CloudConvertServerException;
import com.cloudconvert.executor.RequestExecutor;
import com.cloudconvert.resource.AbstractCaptureWebsitesResource;
import lombok.extern.slf4j.Slf4j;
@@ -30,7 +32,7 @@ public CaptureWebsitesResource(
@Override
public Result capture(
@NotNull final CaptureWebsitesTaskRequest captureWebsitesTaskRequest
- ) throws IOException, URISyntaxException {
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException {
return requestExecutor.execute(getCaptureHttpUriRequest(captureWebsitesTaskRequest), TASK_RESPONSE_TYPE_REFERENCE);
}
diff --git a/src/main/java/com/cloudconvert/resource/sync/ConvertFilesResource.java b/src/main/java/com/cloudconvert/resource/sync/ConvertFilesResource.java
index e59b789..04e00ec 100644
--- a/src/main/java/com/cloudconvert/resource/sync/ConvertFilesResource.java
+++ b/src/main/java/com/cloudconvert/resource/sync/ConvertFilesResource.java
@@ -7,6 +7,8 @@
import com.cloudconvert.dto.response.Pageable;
import com.cloudconvert.dto.response.TaskResponse;
import com.cloudconvert.dto.result.Result;
+import com.cloudconvert.exception.CloudConvertClientException;
+import com.cloudconvert.exception.CloudConvertServerException;
import com.cloudconvert.executor.RequestExecutor;
import com.cloudconvert.resource.AbstractConvertFilesResource;
import com.cloudconvert.resource.params.Filter;
@@ -40,33 +42,33 @@ public ConvertFilesResource(
@Override
public Result convert(
@NotNull final ConvertFilesTaskRequest convertFilesTaskRequest
- ) throws IOException, URISyntaxException {
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException {
return requestExecutor.execute(getConvertHttpUriRequest(convertFilesTaskRequest), TASK_RESPONSE_TYPE_REFERENCE);
}
@Override
- public Result> convertFormats() throws IOException, URISyntaxException {
+ public Result> convertFormats() throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException {
return convertFormats(ImmutableMap.of());
}
@Override
public Result> convertFormats(
@NotNull final Map filters
- ) throws IOException, URISyntaxException {
+ ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException {
return convertFormats(filters, ImmutableList.of());
}
@Override
public Result> convertFormats(
@NotNull final Map filters, @NotNull final List