Skip to content

Commit c565a8f

Browse files
committed
Add get metadata support
1 parent 8b67a16 commit c565a8f

17 files changed

Lines changed: 366 additions & 17 deletions

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ Add the following dependency to your pom.xml:
1010
<dependency>
1111
<groupId>com.cloudconvert</groupId>
1212
<artifactId>cloudconvert-java</artifactId>
13-
<version>1.0.2</version>
13+
<version>1.0.3</version>
1414
</dependency>
1515
```
1616

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.2</version>
10+
<version>1.0.3</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: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ public AsyncCloudConvertClient(
5050
new AsyncMergeFilesResource(settingsProvider, objectMapperProvider, asyncRequestExecutor),
5151
new AsyncCreateArchivesResource(settingsProvider, objectMapperProvider, asyncRequestExecutor),
5252
new AsyncExecuteCommandsResource(settingsProvider, objectMapperProvider, asyncRequestExecutor),
53-
new AsyncCreateThumbnailsResource(settingsProvider, objectMapperProvider, asyncRequestExecutor)
53+
new AsyncCreateThumbnailsResource(settingsProvider, objectMapperProvider, asyncRequestExecutor),
54+
new AsyncGetMetadataResource(settingsProvider, objectMapperProvider, asyncRequestExecutor)
5455
),
5556
new AsyncJobsResource(settingsProvider, objectMapperProvider, asyncRequestExecutor)
5657
);

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ public CloudConvertClient(
5151
new MergeFilesResource(settingsProvider, objectMapperProvider, requestExecutor),
5252
new CreateArchivesResource(settingsProvider, objectMapperProvider, requestExecutor),
5353
new ExecuteCommandsResource(settingsProvider, objectMapperProvider, requestExecutor),
54-
new CreateThumbnailsResource(settingsProvider, objectMapperProvider, requestExecutor)
54+
new CreateThumbnailsResource(settingsProvider, objectMapperProvider, requestExecutor),
55+
new GetMetadataResource(settingsProvider, objectMapperProvider, requestExecutor)
5556
),
5657
new JobsResource(settingsProvider, objectMapperProvider, requestExecutor)
5758
);

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+
METADATA("metadata"),
1617

1718
IMPORT_URL("import/url"),
1819
IMPORT_UPLOAD("import/upload"),
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
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 GetMetadataTaskRequest 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+
public GetMetadataTaskRequest setInput(final String... input) {
43+
this.input = Arrays.stream(input).collect(Collectors.toList());
44+
return this;
45+
}
46+
47+
@Override
48+
public Operation getOperation() {
49+
return Operation.METADATA;
50+
}
51+
}

src/main/java/com/cloudconvert/dto/response/TaskResponse.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,10 @@ public static class Form {
145145

146146
private Map<String, String> parameters;
147147
}
148+
149+
150+
private Map<String, String> metadata;
151+
148152
}
149153

150154

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.GetMetadataTaskRequest;
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 AbstractGetMetadataResource<TRAR extends AbstractResult<TaskResponse>> extends AbstractResource {
19+
20+
public static final String PATH_SEGMENT_METADATA = "metadata";
21+
22+
public AbstractGetMetadataResource(
23+
final SettingsProvider settingsProvider, final ObjectMapperProvider objectMapperProvider
24+
) {
25+
super(settingsProvider, objectMapperProvider);
26+
}
27+
28+
/**
29+
* Create a task to optimize and compress a file. Currently supported formats are PDF, PNG and JPG.
30+
*
31+
* @param getMetadataTaskRequest {@link GetMetadataTaskRequest}
32+
* @return {@link TRAR}
33+
* @throws IOException
34+
* @throws URISyntaxException
35+
*/
36+
public abstract TRAR metadata(
37+
@NotNull final GetMetadataTaskRequest getMetadataTaskRequest
38+
) throws IOException, URISyntaxException;
39+
40+
protected HttpUriRequest getMetadataHttpUriRequest(
41+
@NotNull final GetMetadataTaskRequest getMetadataTaskRequest
42+
) throws IOException, URISyntaxException {
43+
final URI uri = getUri(ImmutableList.of(PATH_SEGMENT_METADATA));
44+
final HttpEntity httpEntity = getHttpEntity(getMetadataTaskRequest);
45+
46+
return getHttpUriRequest(HttpPost.class, uri, httpEntity);
47+
}
48+
}

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

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +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;
11-
import com.cloudconvert.dto.request.CreateThumbnailsTaskRequest;
5+
import com.cloudconvert.dto.request.*;
126
import com.cloudconvert.dto.response.OperationResponse;
137
import com.cloudconvert.dto.response.Pageable;
148
import com.cloudconvert.dto.response.TaskResponse;
@@ -67,6 +61,9 @@ public abstract class AbstractTasksResource<TRAR extends AbstractResult<TaskResp
6761
@Getter
6862
private final AbstractCreateThumbnailsResource<TRAR> abstractCreateThumbnailsResource;
6963

64+
@Getter
65+
private final AbstractGetMetadataResource<TRAR> abstractGetMetadataResource;
66+
7067
private final IncludesToNameValuePairsConverter includesToNameValuePairsConverter;
7168
private final FiltersToNameValuePairsConverter filtersToNameValuePairsConverter;
7269
private final AlternativeToNameValuePairsConverter alternativeToNameValuePairsConverter;
@@ -77,7 +74,7 @@ public AbstractTasksResource(
7774
final AbstractConvertFilesResource<TRAR, ORPAR> abstractConvertFilesResource, final AbstractOptimizeFilesResource<TRAR> abstractOptimizeFilesResource,
7875
final AbstractCaptureWebsitesResource<TRAR> abstractCaptureWebsitesResource, final AbstractMergeFilesResource<TRAR> abstractMergeFilesResource,
7976
final AbstractCreateArchivesResource<TRAR> abstractCreateArchivesResource, final AbstractExecuteCommandsResource<TRAR> abstractExecuteCommandsResource,
80-
final AbstractCreateThumbnailsResource<TRAR> abstractCreateThumbnailsResource
77+
final AbstractCreateThumbnailsResource<TRAR> abstractCreateThumbnailsResource, final AbstractGetMetadataResource<TRAR> abstractGetMetadataResourceResource
8178
) {
8279
super(settingsProvider, objectMapperProvider);
8380

@@ -88,6 +85,7 @@ public AbstractTasksResource(
8885
this.abstractCreateArchivesResource = abstractCreateArchivesResource;
8986
this.abstractExecuteCommandsResource = abstractExecuteCommandsResource;
9087
this.abstractCreateThumbnailsResource = abstractCreateThumbnailsResource;
88+
this.abstractGetMetadataResource = abstractGetMetadataResourceResource;
9189

9290
this.includesToNameValuePairsConverter = new IncludesToNameValuePairsConverter();
9391
this.filtersToNameValuePairsConverter = new FiltersToNameValuePairsConverter();
@@ -498,7 +496,7 @@ public abstract TRAR command(
498496
) throws IOException, URISyntaxException;
499497

500498
/**
501-
* Create a task to convert one input file from input_format to output_format. Requires the task.write scope.
499+
* Create a task to create a thumbnail of one file. Requires the task.write scope.
502500
*
503501
* @param createThumbnailsTaskRequest {@link CreateThumbnailsTaskRequest}
504502
* @return {@link TRAR}
@@ -510,6 +508,19 @@ public abstract TRAR thumbnail(
510508
) throws IOException, URISyntaxException;
511509

512510

511+
/**
512+
* Create a task to extract metadata from one file. Requires the task.write scope.
513+
*
514+
* @param getMetadataTaskRequest {@link CreateThumbnailsTaskRequest}
515+
* @return {@link TRAR}
516+
* @throws IOException
517+
* @throws URISyntaxException
518+
*/
519+
public abstract TRAR metadata(
520+
@NotNull final GetMetadataTaskRequest getMetadataTaskRequest
521+
) throws IOException, URISyntaxException;
522+
523+
513524
@Override
514525
public void close() throws IOException {
515526
abstractConvertFilesResource.close();
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.GetMetadataTaskRequest;
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.AbstractGetMetadataResource;
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 AsyncGetMetadataResource extends AbstractGetMetadataResource<AsyncResult<TaskResponse>> {
18+
19+
private final AsyncRequestExecutor asyncRequestExecutor;
20+
21+
public AsyncGetMetadataResource(
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> metadata(
32+
@NotNull final GetMetadataTaskRequest getMetadataTaskRequest
33+
) throws IOException, URISyntaxException {
34+
return asyncRequestExecutor.execute(getMetadataHttpUriRequest(getMetadataTaskRequest), TASK_RESPONSE_TYPE_REFERENCE);
35+
}
36+
37+
@Override
38+
public void close() throws IOException {
39+
asyncRequestExecutor.close();
40+
}
41+
}

0 commit comments

Comments
 (0)