Skip to content

Commit 140c163

Browse files
committed
Add creating thumbnails support
1 parent 6f870a1 commit 140c163

15 files changed

Lines changed: 382 additions & 75 deletions

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
<groupId>com.cloudconvert</groupId>
99
<artifactId>cloudconvert-java</artifactId>
10-
<version>1.0.0</version>
10+
<version>1.0.1</version>
1111

1212
<name>cloudconvert-java</name>
1313
<description>CloudConvert is an online file converter API - more than 200 different audio, video, document, ebook, archive, image, spreadsheet and presentation formats supported.</description>

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

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,7 @@
1313
import com.cloudconvert.dto.result.AsyncResult;
1414
import com.cloudconvert.executor.AsyncRequestExecutor;
1515
import com.cloudconvert.extractor.ResultExtractor;
16-
import com.cloudconvert.resource.async.AsyncCaptureWebsitesResource;
17-
import com.cloudconvert.resource.async.AsyncConvertFilesResource;
18-
import com.cloudconvert.resource.async.AsyncCreateArchivesResource;
19-
import com.cloudconvert.resource.async.AsyncExecuteCommandsResource;
20-
import com.cloudconvert.resource.async.AsyncExportFilesResource;
21-
import com.cloudconvert.resource.async.AsyncFilesResource;
22-
import com.cloudconvert.resource.async.AsyncImportFilesResource;
23-
import com.cloudconvert.resource.async.AsyncJobsResource;
24-
import com.cloudconvert.resource.async.AsyncMergeFilesResource;
25-
import com.cloudconvert.resource.async.AsyncOptimizeFilesResource;
26-
import com.cloudconvert.resource.async.AsyncTasksResource;
27-
import com.cloudconvert.resource.async.AsyncUsersResource;
28-
import com.cloudconvert.resource.async.AsyncWebhookResource;
16+
import com.cloudconvert.resource.async.*;
2917

3018
import java.io.IOException;
3119
import java.io.InputStream;
@@ -61,7 +49,8 @@ public AsyncCloudConvertClient(
6149
new AsyncCaptureWebsitesResource(settingsProvider, objectMapperProvider, asyncRequestExecutor),
6250
new AsyncMergeFilesResource(settingsProvider, objectMapperProvider, asyncRequestExecutor),
6351
new AsyncCreateArchivesResource(settingsProvider, objectMapperProvider, asyncRequestExecutor),
64-
new AsyncExecuteCommandsResource(settingsProvider, objectMapperProvider, asyncRequestExecutor)
52+
new AsyncExecuteCommandsResource(settingsProvider, objectMapperProvider, asyncRequestExecutor),
53+
new AsyncCreateThumbnailsResource(settingsProvider, objectMapperProvider, asyncRequestExecutor)
6554
),
6655
new AsyncJobsResource(settingsProvider, objectMapperProvider, asyncRequestExecutor)
6756
);

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

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,7 @@
1313
import com.cloudconvert.dto.result.Result;
1414
import com.cloudconvert.executor.RequestExecutor;
1515
import com.cloudconvert.extractor.ResultExtractor;
16-
import com.cloudconvert.resource.sync.CaptureWebsitesResource;
17-
import com.cloudconvert.resource.sync.ConvertFilesResource;
18-
import com.cloudconvert.resource.sync.CreateArchivesResource;
19-
import com.cloudconvert.resource.sync.ExecuteCommandsResource;
20-
import com.cloudconvert.resource.sync.ExportFilesResource;
21-
import com.cloudconvert.resource.sync.FilesResource;
22-
import com.cloudconvert.resource.sync.ImportFilesResource;
23-
import com.cloudconvert.resource.sync.JobsResource;
24-
import com.cloudconvert.resource.sync.MergeFilesResource;
25-
import com.cloudconvert.resource.sync.OptimizeFilesResource;
26-
import com.cloudconvert.resource.sync.TasksResource;
27-
import com.cloudconvert.resource.sync.UsersResource;
28-
import com.cloudconvert.resource.sync.WebhookResource;
16+
import com.cloudconvert.resource.sync.*;
2917

3018
import java.io.IOException;
3119
import java.io.InputStream;
@@ -62,7 +50,8 @@ public CloudConvertClient(
6250
new CaptureWebsitesResource(settingsProvider, objectMapperProvider, requestExecutor),
6351
new MergeFilesResource(settingsProvider, objectMapperProvider, requestExecutor),
6452
new CreateArchivesResource(settingsProvider, objectMapperProvider, requestExecutor),
65-
new ExecuteCommandsResource(settingsProvider, objectMapperProvider, requestExecutor)
53+
new ExecuteCommandsResource(settingsProvider, objectMapperProvider, requestExecutor),
54+
new CreateThumbnailsResource(settingsProvider, objectMapperProvider, requestExecutor)
6655
),
6756
new JobsResource(settingsProvider, objectMapperProvider, requestExecutor)
6857
);

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ public enum Operation {
1212
ARCHIVE("archive"),
1313
ARCHIVE_EXTRACT("archive/extract"),
1414
COMMAND("command"),
15+
THUMBNAIL("thumbnail"),
1516

1617
IMPORT_URL("import/url"),
1718
IMPORT_UPLOAD("import/upload"),
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
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 CreateThumbnailsTaskRequest 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+
* (required) The target format to create the thumbnail.
33+
*/
34+
private String outputFormat;
35+
36+
/**
37+
* (optional) Use a specific engine for the conversion.
38+
*/
39+
private String engine;
40+
41+
/**
42+
* (optional) Use a specific engine version for the conversion.
43+
*/
44+
private String engineVersion;
45+
46+
/**
47+
* (optional) Choose a filename (including extension) for the output file.
48+
*/
49+
private String filename;
50+
51+
public CreateThumbnailsTaskRequest setInput(final String... input) {
52+
this.input = Arrays.stream(input).collect(Collectors.toList());
53+
return this;
54+
}
55+
56+
@Override
57+
public Operation getOperation() {
58+
return Operation.THUMBNAIL;
59+
}
60+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
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.CreateThumbnailsTaskRequest;
6+
import com.cloudconvert.dto.response.TaskResponse;
7+
import com.cloudconvert.dto.result.AbstractResult;
8+
import com.google.common.collect.ImmutableList;
9+
import org.apache.http.HttpEntity;
10+
import org.apache.http.client.methods.HttpPost;
11+
import org.apache.http.client.methods.HttpUriRequest;
12+
import org.jetbrains.annotations.NotNull;
13+
14+
import java.io.IOException;
15+
import java.net.URI;
16+
import java.net.URISyntaxException;
17+
18+
public abstract class AbstractCreateThumbnailsResource<TRAR extends AbstractResult<TaskResponse>> extends AbstractResource {
19+
20+
public static final String PATH_SEGMENT_CREATE_THUMBNAIL = "thumbnail";
21+
22+
public AbstractCreateThumbnailsResource(
23+
final SettingsProvider settingsProvider, final ObjectMapperProvider objectMapperProvider
24+
) {
25+
super(settingsProvider, objectMapperProvider);
26+
}
27+
28+
/**
29+
* Create a task to create a thumbnail (png, jpg).
30+
*
31+
* @param createThumbnailsTaskRequest {@link CreateThumbnailsTaskRequest}
32+
* @return {@link TRAR}
33+
* @throws IOException
34+
* @throws URISyntaxException
35+
*/
36+
public abstract TRAR thumbnail(
37+
@NotNull final CreateThumbnailsTaskRequest createThumbnailsTaskRequest
38+
) throws IOException, URISyntaxException;
39+
40+
protected HttpUriRequest getThumbnailHttpUriRequest(
41+
@NotNull final CreateThumbnailsTaskRequest createThumbnailsTaskRequest
42+
) throws IOException, URISyntaxException {
43+
final URI uri = getUri(ImmutableList.of(PATH_SEGMENT_CREATE_THUMBNAIL));
44+
final HttpEntity httpEntity = getHttpEntity(createThumbnailsTaskRequest);
45+
46+
return getHttpUriRequest(HttpPost.class, uri, httpEntity);
47+
}
48+
}

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

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.cloudconvert.dto.request.ExecuteCommandsTaskRequest;
99
import com.cloudconvert.dto.request.MergeFilesTaskRequest;
1010
import com.cloudconvert.dto.request.OptimizeFilesTaskRequest;
11+
import com.cloudconvert.dto.request.CreateThumbnailsTaskRequest;
1112
import com.cloudconvert.dto.response.OperationResponse;
1213
import com.cloudconvert.dto.response.Pageable;
1314
import com.cloudconvert.dto.response.TaskResponse;
@@ -63,6 +64,9 @@ public abstract class AbstractTasksResource<TRAR extends AbstractResult<TaskResp
6364
@Getter
6465
private final AbstractExecuteCommandsResource<TRAR> abstractExecuteCommandsResource;
6566

67+
@Getter
68+
private final AbstractCreateThumbnailsResource<TRAR> abstractCreateThumbnailsResource;
69+
6670
private final IncludesToNameValuePairsConverter includesToNameValuePairsConverter;
6771
private final FiltersToNameValuePairsConverter filtersToNameValuePairsConverter;
6872
private final AlternativeToNameValuePairsConverter alternativeToNameValuePairsConverter;
@@ -72,7 +76,8 @@ public AbstractTasksResource(
7276
final SettingsProvider settingsProvider, final ObjectMapperProvider objectMapperProvider,
7377
final AbstractConvertFilesResource<TRAR, ORPAR> abstractConvertFilesResource, final AbstractOptimizeFilesResource<TRAR> abstractOptimizeFilesResource,
7478
final AbstractCaptureWebsitesResource<TRAR> abstractCaptureWebsitesResource, final AbstractMergeFilesResource<TRAR> abstractMergeFilesResource,
75-
final AbstractCreateArchivesResource<TRAR> abstractCreateArchivesResource, final AbstractExecuteCommandsResource<TRAR> abstractExecuteCommandsResource
79+
final AbstractCreateArchivesResource<TRAR> abstractCreateArchivesResource, final AbstractExecuteCommandsResource<TRAR> abstractExecuteCommandsResource,
80+
final AbstractCreateThumbnailsResource<TRAR> abstractCreateThumbnailsResource
7681
) {
7782
super(settingsProvider, objectMapperProvider);
7883

@@ -82,6 +87,7 @@ public AbstractTasksResource(
8287
this.abstractMergeFilesResource = abstractMergeFilesResource;
8388
this.abstractCreateArchivesResource = abstractCreateArchivesResource;
8489
this.abstractExecuteCommandsResource = abstractExecuteCommandsResource;
90+
this.abstractCreateThumbnailsResource = abstractCreateThumbnailsResource;
8591

8692
this.includesToNameValuePairsConverter = new IncludesToNameValuePairsConverter();
8793
this.filtersToNameValuePairsConverter = new FiltersToNameValuePairsConverter();
@@ -491,6 +497,19 @@ public abstract TRAR command(
491497
@NotNull final ExecuteCommandsTaskRequest executeCommandsTaskRequest
492498
) throws IOException, URISyntaxException;
493499

500+
/**
501+
* Create a task to convert one input file from input_format to output_format. Requires the task.write scope.
502+
*
503+
* @param createThumbnailsTaskRequest {@link CreateThumbnailsTaskRequest}
504+
* @return {@link TRAR}
505+
* @throws IOException
506+
* @throws URISyntaxException
507+
*/
508+
public abstract TRAR thumbnail(
509+
@NotNull final CreateThumbnailsTaskRequest createThumbnailsTaskRequest
510+
) throws IOException, URISyntaxException;
511+
512+
494513
@Override
495514
public void close() throws IOException {
496515
abstractConvertFilesResource.close();
@@ -499,5 +518,6 @@ public void close() throws IOException {
499518
abstractMergeFilesResource.close();
500519
abstractCreateArchivesResource.close();
501520
abstractExecuteCommandsResource.close();
521+
abstractCreateThumbnailsResource.close();
502522
}
503523
}
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.CreateThumbnailsTaskRequest;
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.AbstractCreateThumbnailsResource;
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 AsyncCreateThumbnailsResource extends AbstractCreateThumbnailsResource<AsyncResult<TaskResponse>> {
18+
19+
private final AsyncRequestExecutor asyncRequestExecutor;
20+
21+
public AsyncCreateThumbnailsResource(
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> thumbnail(
32+
@NotNull final CreateThumbnailsTaskRequest createThumbnailsTaskRequest
33+
) throws IOException, URISyntaxException {
34+
return asyncRequestExecutor.execute(getThumbnailHttpUriRequest(createThumbnailsTaskRequest), 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: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +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.ExecuteCommandsTaskRequest;
9-
import com.cloudconvert.dto.request.MergeFilesTaskRequest;
10-
import com.cloudconvert.dto.request.OptimizeFilesTaskRequest;
5+
import com.cloudconvert.dto.request.*;
116
import com.cloudconvert.dto.response.OperationResponse;
127
import com.cloudconvert.dto.response.Pageable;
138
import com.cloudconvert.dto.response.TaskResponse;
@@ -38,10 +33,11 @@ public AsyncTasksResource(
3833
final SettingsProvider settingsProvider, final ObjectMapperProvider objectMapperProvider, final AsyncRequestExecutor asyncRequestExecutor,
3934
final AsyncConvertFilesResource asyncConvertFilesResource, final AsyncOptimizeFilesResource asyncOptimizeFilesResource,
4035
final AsyncCaptureWebsitesResource asyncCaptureWebsitesResource, final AsyncMergeFilesResource asyncMergeFilesResource,
41-
final AsyncCreateArchivesResource asyncCreateArchivesResource, final AsyncExecuteCommandsResource asyncExecuteCommandsResource
36+
final AsyncCreateArchivesResource asyncCreateArchivesResource, final AsyncExecuteCommandsResource asyncExecuteCommandsResource,
37+
final AsyncCreateThumbnailsResource asyncCreateThumbnailsResource
4238
) {
4339
super(settingsProvider, objectMapperProvider, asyncConvertFilesResource, asyncOptimizeFilesResource, asyncCaptureWebsitesResource,
44-
asyncMergeFilesResource, asyncCreateArchivesResource, asyncExecuteCommandsResource);
40+
asyncMergeFilesResource, asyncCreateArchivesResource, asyncExecuteCommandsResource, asyncCreateThumbnailsResource);
4541

4642
this.asyncRequestExecutor = asyncRequestExecutor;
4743
}
@@ -196,6 +192,14 @@ public AsyncResult<TaskResponse> command(
196192
return getAbstractExecuteCommandsResource().command(executeCommandsTaskRequest);
197193
}
198194

195+
@Override
196+
public AsyncResult<TaskResponse> thumbnail(
197+
@NotNull final CreateThumbnailsTaskRequest createThumbnailsTaskRequest
198+
) throws IOException, URISyntaxException {
199+
return getAbstractCreateThumbnailsResource().thumbnail(createThumbnailsTaskRequest);
200+
}
201+
202+
199203
@Override
200204
public void close() throws IOException {
201205
asyncRequestExecutor.close();
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
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.CreateThumbnailsTaskRequest;
6+
import com.cloudconvert.dto.response.TaskResponse;
7+
import com.cloudconvert.dto.result.Result;
8+
import com.cloudconvert.executor.RequestExecutor;
9+
import com.cloudconvert.resource.AbstractCreateThumbnailsResource;
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 CreateThumbnailsResource extends AbstractCreateThumbnailsResource<Result<TaskResponse>> {
18+
19+
private final RequestExecutor requestExecutor;
20+
21+
public CreateThumbnailsResource(
22+
final SettingsProvider settingsProvider,
23+
final ObjectMapperProvider objectMapperProvider, final RequestExecutor requestExecutor
24+
) {
25+
super(settingsProvider, objectMapperProvider);
26+
27+
this.requestExecutor = requestExecutor;
28+
}
29+
30+
@Override
31+
public Result<TaskResponse> thumbnail(
32+
@NotNull final CreateThumbnailsTaskRequest createThumbnailsTaskRequest
33+
) throws IOException, URISyntaxException {
34+
return requestExecutor.execute(getThumbnailHttpUriRequest(createThumbnailsTaskRequest), TASK_RESPONSE_TYPE_REFERENCE);
35+
}
36+
37+
@Override
38+
public void close() throws IOException {
39+
requestExecutor.close();
40+
}
41+
}

0 commit comments

Comments
 (0)