Skip to content

Commit f9d4b33

Browse files
committed
Add watermark support
1 parent b0ddd12 commit f9d4b33

14 files changed

Lines changed: 384 additions & 88 deletions

src/main/java/com/cloudconvert/client/AsyncCloudConvertClient.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ public AsyncCloudConvertClient(
5252
new AsyncExecuteCommandsResource(settingsProvider, objectMapperProvider, asyncRequestExecutor),
5353
new AsyncCreateThumbnailsResource(settingsProvider, objectMapperProvider, asyncRequestExecutor),
5454
new AsyncGetMetadataResource(settingsProvider, objectMapperProvider, asyncRequestExecutor),
55-
new AsyncWriteMetadataResource(settingsProvider, objectMapperProvider, asyncRequestExecutor)
55+
new AsyncWriteMetadataResource(settingsProvider, objectMapperProvider, asyncRequestExecutor),
56+
new AsyncAddWatermarkResource(settingsProvider, objectMapperProvider, asyncRequestExecutor)
5657
),
5758
new AsyncJobsResource(settingsProvider, objectMapperProvider, asyncRequestExecutor)
5859
);

src/main/java/com/cloudconvert/client/CloudConvertClient.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ public CloudConvertClient(
5353
new ExecuteCommandsResource(settingsProvider, objectMapperProvider, requestExecutor),
5454
new CreateThumbnailsResource(settingsProvider, objectMapperProvider, requestExecutor),
5555
new GetMetadataResource(settingsProvider, objectMapperProvider, requestExecutor),
56-
new WriteMetadataResource(settingsProvider, objectMapperProvider, requestExecutor)
56+
new WriteMetadataResource(settingsProvider, objectMapperProvider, requestExecutor),
57+
new AddWatermarkResource(settingsProvider, objectMapperProvider, requestExecutor)
5758
),
5859
new JobsResource(settingsProvider, objectMapperProvider, requestExecutor)
5960
);

src/main/java/com/cloudconvert/dto/Operation.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public enum Operation {
1313
ARCHIVE_EXTRACT("archive/extract"),
1414
COMMAND("command"),
1515
THUMBNAIL("thumbnail"),
16+
WATERMARK("watermark"),
1617
METADATA("metadata"),
1718
METADATA_WRITE("metadata/write"),
1819

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package com.cloudconvert.dto.request;
2+
3+
import com.cloudconvert.dto.Operation;
4+
import lombok.EqualsAndHashCode;
5+
import lombok.Getter;
6+
import lombok.Setter;
7+
import lombok.ToString;
8+
import lombok.experimental.Accessors;
9+
10+
import java.util.Arrays;
11+
import java.util.List;
12+
import java.util.stream.Collectors;
13+
14+
@Getter
15+
@Setter
16+
@Accessors(chain = true)
17+
@ToString
18+
@EqualsAndHashCode(callSuper = true)
19+
public class AddWatermarkTaskRequest extends TaskRequest {
20+
21+
/**
22+
* (required) The ID of the input task for the conversion, normally the import task. Multiple task IDs can be provided as an array.
23+
*/
24+
private List<String> input;
25+
26+
/**
27+
* (optional) The current format of the file, e.g. pdf. If not set, the extension of the input file is used as input format.
28+
*/
29+
private String inputFormat;
30+
31+
/**
32+
* (optional) Use a specific engine for the conversion.
33+
*/
34+
private String engine;
35+
36+
/**
37+
* (optional) Use a specific engine version for the conversion.
38+
*/
39+
private String engineVersion;
40+
41+
/**
42+
* (optional) Choose a filename (including extension) for the output file.
43+
*/
44+
private String filename;
45+
46+
public AddWatermarkTaskRequest setInput(final String... input) {
47+
this.input = Arrays.stream(input).collect(Collectors.toList());
48+
return this;
49+
}
50+
51+
@Override
52+
public Operation getOperation() {
53+
return Operation.WATERMARK;
54+
}
55+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package com.cloudconvert.resource;
2+
3+
import com.cloudconvert.client.mapper.ObjectMapperProvider;
4+
import com.cloudconvert.client.setttings.SettingsProvider;
5+
import com.cloudconvert.dto.request.AddWatermarkTaskRequest;
6+
import com.cloudconvert.dto.response.TaskResponse;
7+
import com.cloudconvert.dto.result.AbstractResult;
8+
import com.cloudconvert.exception.CloudConvertClientException;
9+
import com.cloudconvert.exception.CloudConvertServerException;
10+
import com.google.common.collect.ImmutableList;
11+
import org.apache.http.HttpEntity;
12+
import org.apache.http.client.methods.HttpPost;
13+
import org.apache.http.client.methods.HttpUriRequest;
14+
import org.jetbrains.annotations.NotNull;
15+
16+
import java.io.IOException;
17+
import java.net.URI;
18+
import java.net.URISyntaxException;
19+
20+
public abstract class AbstractAddWatermarkResource<TRAR extends AbstractResult<TaskResponse>> extends AbstractResource {
21+
22+
public static final String PATH_SEGMENT_ADD_WATERMARK = "watermark";
23+
24+
public AbstractAddWatermarkResource(
25+
final SettingsProvider settingsProvider, final ObjectMapperProvider objectMapperProvider
26+
) {
27+
super(settingsProvider, objectMapperProvider);
28+
}
29+
30+
/**
31+
* Create a task to add a watermark.
32+
*
33+
* @param addWatermarkTaskRequest {@link AddWatermarkTaskRequest}
34+
* @return {@link TRAR}
35+
* @throws IOException
36+
* @throws URISyntaxException
37+
*/
38+
public abstract TRAR watermark(
39+
@NotNull final AddWatermarkTaskRequest addWatermarkTaskRequest
40+
) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
41+
42+
protected HttpUriRequest getWatermarkHttpUriRequest(
43+
@NotNull final AddWatermarkTaskRequest addWatermarkTaskRequest
44+
) throws IOException, URISyntaxException {
45+
final URI uri = getUri(ImmutableList.of(PATH_SEGMENT_ADD_WATERMARK));
46+
final HttpEntity httpEntity = getHttpEntity(addWatermarkTaskRequest);
47+
48+
return getHttpUriRequest(HttpPost.class, uri, httpEntity);
49+
}
50+
}

src/main/java/com/cloudconvert/resource/AbstractTasksResource.java

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,7 @@
22

33
import com.cloudconvert.client.mapper.ObjectMapperProvider;
44
import com.cloudconvert.client.setttings.SettingsProvider;
5-
import com.cloudconvert.dto.request.CaptureWebsitesTaskRequest;
6-
import com.cloudconvert.dto.request.ConvertFilesTaskRequest;
7-
import com.cloudconvert.dto.request.CreateArchivesTaskRequest;
8-
import com.cloudconvert.dto.request.CreateThumbnailsTaskRequest;
9-
import com.cloudconvert.dto.request.ExecuteCommandsTaskRequest;
10-
import com.cloudconvert.dto.request.GetMetadataTaskRequest;
11-
import com.cloudconvert.dto.request.MergeFilesTaskRequest;
12-
import com.cloudconvert.dto.request.OptimizeFilesTaskRequest;
13-
import com.cloudconvert.dto.request.WriteMetadataTaskRequest;
5+
import com.cloudconvert.dto.request.*;
146
import com.cloudconvert.dto.response.OperationResponse;
157
import com.cloudconvert.dto.response.Pageable;
168
import com.cloudconvert.dto.response.TaskResponse;
@@ -77,6 +69,9 @@ public abstract class AbstractTasksResource<TRAR extends AbstractResult<TaskResp
7769
@Getter
7870
private final AbstractWriteMetadataResource<TRAR> abstractWriteMetadataResource;
7971

72+
@Getter
73+
private final AbstractAddWatermarkResource<TRAR> abstractAddWatermarkResource;
74+
8075
private final IncludesToNameValuePairsConverter includesToNameValuePairsConverter;
8176
private final FiltersToNameValuePairsConverter filtersToNameValuePairsConverter;
8277
private final AlternativeToNameValuePairsConverter alternativeToNameValuePairsConverter;
@@ -88,7 +83,7 @@ public AbstractTasksResource(
8883
final AbstractCaptureWebsitesResource<TRAR> abstractCaptureWebsitesResource, final AbstractMergeFilesResource<TRAR> abstractMergeFilesResource,
8984
final AbstractCreateArchivesResource<TRAR> abstractCreateArchivesResource, final AbstractExecuteCommandsResource<TRAR> abstractExecuteCommandsResource,
9085
final AbstractCreateThumbnailsResource<TRAR> abstractCreateThumbnailsResource, final AbstractGetMetadataResource<TRAR> abstractGetMetadataResourceResource,
91-
final AbstractWriteMetadataResource<TRAR> abstractWriteMetadataResourceResource
86+
final AbstractWriteMetadataResource<TRAR> abstractWriteMetadataResourceResource, final AbstractAddWatermarkResource<TRAR> abstractAddWatermarkResource
9287
) {
9388
super(settingsProvider, objectMapperProvider);
9489

@@ -101,6 +96,7 @@ public AbstractTasksResource(
10196
this.abstractCreateThumbnailsResource = abstractCreateThumbnailsResource;
10297
this.abstractGetMetadataResource = abstractGetMetadataResourceResource;
10398
this.abstractWriteMetadataResource = abstractWriteMetadataResourceResource;
99+
this.abstractAddWatermarkResource = abstractAddWatermarkResource;
104100

105101
this.includesToNameValuePairsConverter = new IncludesToNameValuePairsConverter();
106102
this.filtersToNameValuePairsConverter = new FiltersToNameValuePairsConverter();
@@ -549,6 +545,19 @@ public abstract TRAR writeMetadata(
549545
) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
550546

551547

548+
/**
549+
* Create a task to add a watermark to a file. Requires the task.write scope.
550+
*
551+
* @param addWatermarkTaskRequest {@link AddWatermarkTaskRequest}
552+
* @return {@link TRAR}
553+
* @throws IOException
554+
* @throws URISyntaxException
555+
*/
556+
public abstract TRAR watermark(
557+
@NotNull final AddWatermarkTaskRequest addWatermarkTaskRequest
558+
) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException;
559+
560+
552561
@Override
553562
public void close() throws IOException {
554563
abstractConvertFilesResource.close();
@@ -560,5 +569,6 @@ public void close() throws IOException {
560569
abstractCreateThumbnailsResource.close();
561570
abstractGetMetadataResource.close();
562571
abstractWriteMetadataResource.close();
572+
abstractAddWatermarkResource.close();
563573
}
564574
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.cloudconvert.resource.async;
2+
3+
import com.cloudconvert.client.mapper.ObjectMapperProvider;
4+
import com.cloudconvert.client.setttings.SettingsProvider;
5+
import com.cloudconvert.dto.request.AddWatermarkTaskRequest;
6+
import com.cloudconvert.dto.response.TaskResponse;
7+
import com.cloudconvert.dto.result.AsyncResult;
8+
import com.cloudconvert.executor.AsyncRequestExecutor;
9+
import com.cloudconvert.resource.AbstractAddWatermarkResource;
10+
import lombok.extern.slf4j.Slf4j;
11+
import org.jetbrains.annotations.NotNull;
12+
13+
import java.io.IOException;
14+
import java.net.URISyntaxException;
15+
16+
@Slf4j
17+
public class AsyncAddWatermarkResource extends AbstractAddWatermarkResource<AsyncResult<TaskResponse>> {
18+
19+
private final AsyncRequestExecutor asyncRequestExecutor;
20+
21+
public AsyncAddWatermarkResource(
22+
final SettingsProvider settingsProvider,
23+
final ObjectMapperProvider objectMapperProvider, final AsyncRequestExecutor asyncRequestExecutor
24+
) {
25+
super(settingsProvider, objectMapperProvider);
26+
27+
this.asyncRequestExecutor = asyncRequestExecutor;
28+
}
29+
30+
@Override
31+
public AsyncResult<TaskResponse> watermark(
32+
@NotNull final AddWatermarkTaskRequest addWatermarkTaskRequest
33+
) throws IOException, URISyntaxException {
34+
return asyncRequestExecutor.execute(getWatermarkHttpUriRequest(addWatermarkTaskRequest), TASK_RESPONSE_TYPE_REFERENCE);
35+
}
36+
37+
@Override
38+
public void close() throws IOException {
39+
asyncRequestExecutor.close();
40+
}
41+
}

src/main/java/com/cloudconvert/resource/async/AsyncTasksResource.java

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,7 @@
22

33
import com.cloudconvert.client.mapper.ObjectMapperProvider;
44
import com.cloudconvert.client.setttings.SettingsProvider;
5-
import com.cloudconvert.dto.request.CaptureWebsitesTaskRequest;
6-
import com.cloudconvert.dto.request.ConvertFilesTaskRequest;
7-
import com.cloudconvert.dto.request.CreateArchivesTaskRequest;
8-
import com.cloudconvert.dto.request.CreateThumbnailsTaskRequest;
9-
import com.cloudconvert.dto.request.ExecuteCommandsTaskRequest;
10-
import com.cloudconvert.dto.request.GetMetadataTaskRequest;
11-
import com.cloudconvert.dto.request.MergeFilesTaskRequest;
12-
import com.cloudconvert.dto.request.OptimizeFilesTaskRequest;
13-
import com.cloudconvert.dto.request.WriteMetadataTaskRequest;
5+
import com.cloudconvert.dto.request.*;
146
import com.cloudconvert.dto.response.OperationResponse;
157
import com.cloudconvert.dto.response.Pageable;
168
import com.cloudconvert.dto.response.TaskResponse;
@@ -45,10 +37,10 @@ public AsyncTasksResource(
4537
final AsyncCaptureWebsitesResource asyncCaptureWebsitesResource, final AsyncMergeFilesResource asyncMergeFilesResource,
4638
final AsyncCreateArchivesResource asyncCreateArchivesResource, final AsyncExecuteCommandsResource asyncExecuteCommandsResource,
4739
final AsyncCreateThumbnailsResource asyncCreateThumbnailsResource, final AsyncGetMetadataResource asyncGetMetadataResource,
48-
final AsyncWriteMetadataResource asyncWriteMetadataResource
40+
final AsyncWriteMetadataResource asyncWriteMetadataResource, final AsyncAddWatermarkResource asyncAddWatermarkResource
4941
) {
5042
super(settingsProvider, objectMapperProvider, asyncConvertFilesResource, asyncOptimizeFilesResource, asyncCaptureWebsitesResource,
51-
asyncMergeFilesResource, asyncCreateArchivesResource, asyncExecuteCommandsResource, asyncCreateThumbnailsResource, asyncGetMetadataResource, asyncWriteMetadataResource);
43+
asyncMergeFilesResource, asyncCreateArchivesResource, asyncExecuteCommandsResource, asyncCreateThumbnailsResource, asyncGetMetadataResource, asyncWriteMetadataResource, asyncAddWatermarkResource);
5244

5345
this.asyncRequestExecutor = asyncRequestExecutor;
5446
}
@@ -224,6 +216,13 @@ public AsyncResult<TaskResponse> writeMetadata(
224216
return getAbstractWriteMetadataResource().writeMetadata(writeMetadataTaskRequest);
225217
}
226218

219+
@Override
220+
public AsyncResult<TaskResponse> watermark(
221+
@NotNull final AddWatermarkTaskRequest addWatermarkTaskRequest
222+
) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException {
223+
return getAbstractAddWatermarkResource().watermark(addWatermarkTaskRequest);
224+
}
225+
227226
@Override
228227
public void close() throws IOException {
229228
asyncRequestExecutor.close();
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package com.cloudconvert.resource.sync;
2+
3+
import com.cloudconvert.client.mapper.ObjectMapperProvider;
4+
import com.cloudconvert.client.setttings.SettingsProvider;
5+
import com.cloudconvert.dto.request.AddWatermarkTaskRequest;
6+
import com.cloudconvert.dto.response.TaskResponse;
7+
import com.cloudconvert.dto.result.Result;
8+
import com.cloudconvert.exception.CloudConvertClientException;
9+
import com.cloudconvert.exception.CloudConvertServerException;
10+
import com.cloudconvert.executor.RequestExecutor;
11+
import com.cloudconvert.resource.AbstractAddWatermarkResource;
12+
import lombok.extern.slf4j.Slf4j;
13+
import org.jetbrains.annotations.NotNull;
14+
15+
import java.io.IOException;
16+
import java.net.URISyntaxException;
17+
18+
@Slf4j
19+
public class AddWatermarkResource extends AbstractAddWatermarkResource<Result<TaskResponse>> {
20+
21+
private final RequestExecutor requestExecutor;
22+
23+
public AddWatermarkResource(
24+
final SettingsProvider settingsProvider,
25+
final ObjectMapperProvider objectMapperProvider, final RequestExecutor requestExecutor
26+
) {
27+
super(settingsProvider, objectMapperProvider);
28+
29+
this.requestExecutor = requestExecutor;
30+
}
31+
32+
@Override
33+
public Result<TaskResponse> watermark(
34+
@NotNull final AddWatermarkTaskRequest createWatermarkTaskRequest
35+
) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException {
36+
return requestExecutor.execute(getWatermarkHttpUriRequest(createWatermarkTaskRequest), TASK_RESPONSE_TYPE_REFERENCE);
37+
}
38+
39+
@Override
40+
public void close() throws IOException {
41+
requestExecutor.close();
42+
}
43+
}

src/main/java/com/cloudconvert/resource/sync/TasksResource.java

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,7 @@
22

33
import com.cloudconvert.client.mapper.ObjectMapperProvider;
44
import com.cloudconvert.client.setttings.SettingsProvider;
5-
import com.cloudconvert.dto.request.CaptureWebsitesTaskRequest;
6-
import com.cloudconvert.dto.request.ConvertFilesTaskRequest;
7-
import com.cloudconvert.dto.request.CreateArchivesTaskRequest;
8-
import com.cloudconvert.dto.request.CreateThumbnailsTaskRequest;
9-
import com.cloudconvert.dto.request.ExecuteCommandsTaskRequest;
10-
import com.cloudconvert.dto.request.GetMetadataTaskRequest;
11-
import com.cloudconvert.dto.request.MergeFilesTaskRequest;
12-
import com.cloudconvert.dto.request.OptimizeFilesTaskRequest;
13-
import com.cloudconvert.dto.request.WriteMetadataTaskRequest;
5+
import com.cloudconvert.dto.request.*;
146
import com.cloudconvert.dto.response.OperationResponse;
157
import com.cloudconvert.dto.response.Pageable;
168
import com.cloudconvert.dto.response.TaskResponse;
@@ -46,10 +38,10 @@ public TasksResource(
4638
final CaptureWebsitesResource captureWebsitesResource, final MergeFilesResource mergeFilesResource,
4739
final CreateArchivesResource createArchivesResource, final ExecuteCommandsResource executeCommandsResource,
4840
final CreateThumbnailsResource createThumbnailsResource, final GetMetadataResource getMetadataResource,
49-
final WriteMetadataResource writeMetadataResource
41+
final WriteMetadataResource writeMetadataResource, final AddWatermarkResource addWatermarkResource
5042
) {
5143
super(settingsProvider, objectMapperProvider, convertFilesResource, optimizeFilesResource, captureWebsitesResource,
52-
mergeFilesResource, createArchivesResource, executeCommandsResource, createThumbnailsResource, getMetadataResource, writeMetadataResource);
44+
mergeFilesResource, createArchivesResource, executeCommandsResource, createThumbnailsResource, getMetadataResource, writeMetadataResource, addWatermarkResource);
5345

5446
this.requestExecutor = requestExecutor;
5547
}
@@ -222,6 +214,12 @@ public Result<TaskResponse> writeMetadata(@NotNull WriteMetadataTaskRequest writ
222214
return getAbstractWriteMetadataResource().writeMetadata(writeMetadataTaskRequest);
223215
}
224216

217+
@Override
218+
public Result<TaskResponse> watermark(@NotNull AddWatermarkTaskRequest addWatermarkTaskRequest
219+
) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException {
220+
return getAbstractAddWatermarkResource().watermark(addWatermarkTaskRequest);
221+
}
222+
225223
@Override
226224
public void close() throws IOException {
227225
requestExecutor.close();

0 commit comments

Comments
 (0)