From 848aecbc4abfff6a972b8448e5c12f0438223051 Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Wed, 15 Apr 2020 23:03:57 +0200 Subject: [PATCH 01/51] use official account for integration tests --- README.md | 11 ++++++++++- src/test/resources/application.properties | 2 +- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 90fde0b..e278723 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,9 @@ ## cloudconvert-java -This is the official Java SDK v2 for the [CloudConvert](https://cloudconvert.com/api/v2) _API v2_. + [![Build Status](https://travis-ci.org/cloudconvert/cloudconvert-java.svg?branch=master)](https://travis-ci.org/cloudconvert/cloudconvert-java) +This is the official Java SDK v2 for the [CloudConvert](https://cloudconvert.com/api/v2) _API v2_. + ## Installation ``` $ mvn clean install -U @@ -233,6 +235,13 @@ $ mvn clean install -U -Punit-tests $ mvn clean install -U -Pintegration-tests ``` +By default, this runs the integration tests against the Sandbox API with an official CloudConvert account. If you would like to use your own account, you can set your API key in the `application.properties` file. In this case you need to whitelist the following MD5 hashes for Sandbox API (using the CloudConvert dashboard). + + 07db6477193bf8313e8082a1e1b5eaf6 image-test-file-1.jpg + 7ef166ecc65949f6f2e7eb94a3dac0d4 image-test-file-2.jpg + ccbb000ef5bd9dad0fab600d2fff02fb odt-test-file-1.odt + 3a3b4d07338b51db19056a73a89a186b odt-test-file-2.odt + ## Resources * [API v2 Documentation](https://cloudconvert.com/api/v2) * [CloudConvert Blog](https://cloudconvert.com/blog) diff --git a/src/test/resources/application.properties b/src/test/resources/application.properties index 802d4ea..87c3a81 100644 --- a/src/test/resources/application.properties +++ b/src/test/resources/application.properties @@ -1,3 +1,3 @@ -CLOUDCONVERT_API_KEY=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjE1YTE4MjMwZGEwZjQ5Mzk1MTg1YjAyOWE4YWE3MWI0ZDJlMjgxMDVlMDkxYjk0OTYzNGVkMjAzY2I1M2U4ZGY1NmM3ZWI2N2RkZTFmNjNiIn0.eyJhdWQiOiIxIiwianRpIjoiMTVhMTgyMzBkYTBmNDkzOTUxODViMDI5YThhYTcxYjRkMmUyODEwNWUwOTFiOTQ5NjM0ZWQyMDNjYjUzZThkZjU2YzdlYjY3ZGRlMWY2M2IiLCJpYXQiOjE1ODU3MTM0OTEsIm5iZiI6MTU4NTcxMzQ5MSwiZXhwIjo0NzQxMzg3MDkxLCJzdWIiOiI0MTI0NjgyMyIsInNjb3BlcyI6WyJ1c2VyLnJlYWQiLCJ1c2VyLndyaXRlIiwidGFzay5yZWFkIiwidGFzay53cml0ZSIsIndlYmhvb2sucmVhZCIsInByZXNldC5yZWFkIiwid2ViaG9vay53cml0ZSIsInByZXNldC53cml0ZSJdfQ.m-RCnQ9-9a0MH6HhNtpTlJctOW9KJaBA8gD459ZMA0-RR0iPwbJuR9AbiMtrVq4au27aEkh8TcLMW9Vsk1vlIIw91HctAYD2hVvGDd3SpLJ9TWsxs4D4R2FoyUHMqdtIPi5jL6sxYY4FrbL9avW49nPCxhnYg1t1iSRziZq9Z0pK3NFXXnOTxwCSqlaPXnDy5U46a2oWZCXmxCCS4Expw6-I4MlJIB2HVRV4441fVLqmpJl2RgnYkcpZJWi5CVo6hkhTFyeL9zVDjEnjLgH37kFzB2bjHQC9JJOsOHHnFfz74tIEw5BE97l6RD1OGHKJ5ZZKn2Vn4D8Om3YuavFSGjdqxpGkNBbQRB8K9dIQS-mbRLKkTk7VBf15iSujRDopQqYorGxoOKvQsWw_jr2OAagil9YOLuac3hspW5a1GY5ojqOPABQG3gRgfh6Penv7othC--U0jWi8A17M-Xc_vZiGqdoQyEqy1JTlMiTLuq2aMW9F3Kxzc35D4oB4NJwRMq8vZNeCc-1NDARM1Q_yF6IbXrG2euVzjPpjnqMGaHs210lChlmMuasaBE3H8M-biJP1bFtAiegoEZhMoU-x13_qywR1f8yKy_hz_VcEQ4mqx3bzPfvdXEqQ3hi1FM2RGJ1t7bqXDdRPXADmKlNNG6hWCtvXyVeO5ID3wbYvd1k +CLOUDCONVERT_API_KEY=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjI4YmE3OGQyZjc1NWM5ZGE3Yjg1NDRhMWRkMjg2NWM4N2U0YzI5NWI0NzQ0Zjc4ZDNmMzA3OWM2NjU3ZjI0MjVhOTMyYjIxMjU5ZGU2NWQ4In0.eyJhdWQiOiIxIiwianRpIjoiMjhiYTc4ZDJmNzU1YzlkYTdiODU0NGExZGQyODY1Yzg3ZTRjMjk1YjQ3NDRmNzhkM2YzMDc5YzY2NTdmMjQyNWE5MzJiMjEyNTlkZTY1ZDgiLCJpYXQiOjE1NTkwNjc3NzcsIm5iZiI6MTU1OTA2Nzc3NywiZXhwIjo0NzE0NzQxMzc3LCJzdWIiOiIzNzExNjc4NCIsInNjb3BlcyI6WyJ1c2VyLnJlYWQiLCJ1c2VyLndyaXRlIiwidGFzay5yZWFkIiwidGFzay53cml0ZSIsIndlYmhvb2sucmVhZCIsIndlYmhvb2sud3JpdGUiXX0.IkmkfDVGwouCH-ICFAShQMHyFAHK3y90CSoissUVD8h5HFG4GqN5DEw0IFzlPr1auUKp3H1pAvPutdIQtrDMTmUUmGMUb2dRlCAuQdqxa81Q5KAmcKDgOg2YTWOWEGMy3jETTb7W6vyNGsT_3DFMapMdeOw1jdIUTMZqW3QbSCeGXj3PMRnhI7YynaDtmktjzO9IUDHbeT2HRzzMiep97KvVZNjYtZvgM-kbUjE6Mm68_kA8JMuQeor0Yg7896JPV0YM3-MnHf7elKgoCJbfBCDAbvSX_ZYsSI7IGoLLb0mgJVfFcH_HMYAHhJj5cUEJN2Iml-FkODqrRk72bVxyJs9j1GPQBl4ORXuU9yrjUgHrRaZ5YM__LwsUQB3AuB92oyQseCjULn1sWM1PzIXCcyVjKZSpn9LAAGNf9paCF-_G9ok9tZKccRouCiYl9v5XbmuxV8hXYp6fXZxyaAkj_JN2kErVSkxYzVyyZL1e220aFFnbch6nDvLFHgi-WeTQHFQDzuHsM8RKRixV8uD7pk3de4AEYg0EWqZHCr82qY7TGdSQvuAS0QIy3B89OwQW0ROW4k3Yw0XIKgKSYWyKnc7huc7yPQUIDDDAOa5OojXrVY5ZuL_hwQMIOmejcHTKFdAgzAaVnRkC8_FfVh4wHCPBaHjze9hRp5n4O1pnPFI CLOUDCONVERT_SANDBOX=true CLOUDCONVERT_WEBHOOK_SIGNING_SECRET=90sffs0d8fs0f9sf0 From 501bfe45a540faeac659442b10683e2fe5331cf3 Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Fri, 17 Apr 2020 12:07:13 +0200 Subject: [PATCH 02/51] update README --- README.md | 68 ++++++++++++++++++------------------------------------- 1 file changed, 22 insertions(+), 46 deletions(-) diff --git a/README.md b/README.md index e278723..2eeae30 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ By default, API Key, Sandbox and Webhook Signing Secret are being read from `app ```properties CLOUDCONVERT_API_KEY= CLOUDCONVERT_SANDBOX= -CLOUDCONVERT_WEBHOOK_SIGNING_SECRET= +CLOUDCONVERT_WEBHOOK_SIGNING_SECRET= ``` It is also possible to provide configuration above using environment variables, custom properties file, system properties and string variables. For all options, `CLOUDCONVERT_API_KEY`, `CLOUDCONVERT_SANDBOX` and `CLOUDCONVERT_WEBHOOK_SIGNING_SECRET` variable names should be used. @@ -33,7 +33,7 @@ new CloudConvertClient(new EnvironmentVariableSettingsProvider()); new CloudConvertClient(new PropertyFileSettingsProvider("custom.properties")); // Using configuration from string variables -new CloudConvertClient(new StringSettingsProvider("api-url", "webhook-signing-secret")); +new CloudConvertClient(new StringSettingsProvider("api-url", "webhook-signing-secret", false)); // Using configuration from system properties new CloudConvertClient(new SystemPropertySettingsProvider()); @@ -51,7 +51,7 @@ new AsyncCloudConvertClient(new EnvironmentVariableSettingsProvider()); new AsyncCloudConvertClient(new PropertyFileSettingsProvider("custom.properties")); // Using configuration from string variables -new AsyncCloudConvertClient(new StringSettingsProvider("api-url", "webhook-signing-secret")); +new AsyncCloudConvertClient(new StringSettingsProvider("api-url", "webhook-signing-secret", false)); // Using configuration from system properties new AsyncCloudConvertClient(new SystemPropertySettingsProvider()); @@ -68,7 +68,10 @@ final CloudConvertClient cloudConvertClient = new CloudConvertClient(); final JobResponse createJobResponse = cloudConvertClient.jobs().create( ImmutableMap.of( "import-my-file", new UrlImportRequest().setUrl("import-url"), - "convert-my-file", new ConvertFilesTaskRequest().setInput("import-my-file").set("width", 100).set("height", 100), + "convert-my-file", new ConvertFilesTaskRequest() + .setInput("import-my-file") + .set("width", 100) + .set("height", 100), "export-my-file", new UrlExportRequest().setInput("convert-my-file") ) ).getBody(); @@ -92,7 +95,10 @@ final AsyncCloudConvertClient asyncCloudConvertClient = new AsyncCloudConvertCli final JobResponse createJobResponse = asyncCloudConvertClient.jobs().create( ImmutableMap.of( "import-my-file", new UrlImportRequest().setUrl("import-url"), - "convert-my-file", new ConvertFilesTaskRequest().setInput("import-my-file").set("width", 100).set("height", 100), + "convert-my-file", new ConvertFilesTaskRequest() + .setInput("import-my-file") + .set("width", 100) + .set("height", 100), "export-my-file", new UrlExportRequest().setInput("convert-my-file") ) ).get().getBody(); @@ -112,44 +118,36 @@ CloudConvert can generate public URLs using `export/url` tasks. You can use thes ###### Default (synchronous) client ```java -// Create a client -final CloudConvertClient cloudConvertClient = new CloudConvertClient(); - -// Create an export/url task -final TaskResponse exportUrlTaskResponse = cloudConvertClient.exportUsing().url(new UrlExportRequest()).getBody(); - -// Get an export/url task id -final String exportUrlTaskId = exportUrlTaskResponse.getId(); - // Wait for an export/url task to be finished final TaskResponse waitUrlExportTaskResponse = cloudConvertClient.tasks().wait(exportUrlTaskId).getBody(); -// Get a url of export/url task +// Get url and filename of export/url task final String exportUrl = waitUrlExportTaskResponse.getResult().getFiles().get(0).get("url"); +final String filename = waitUrlExportTaskResponse.getResult().getFiles().get(0).get("filename"); // Get file as input stream using url of export/url task final InputStream inputStream = cloudConvertClient.files().download(exportUrl).getBody(); + +// Save to local file +OutputStream outputStream = new FileOutputStream(new File(filename)); +IOUtils.copy(inputStream, outputStream); ``` ###### Asynchronous client ```java -// Create a client -final AsyncCloudConvertClient asyncCloudConvertClient = new AsyncCloudConvertClient(); - -// Create an export/url task -final TaskResponse exportUrlTaskResponse = asyncCloudConvertClient.exportUsing().url(new UrlExportRequest()).get().getBody(); - -// Get an export/url task id -final String exportUrlTaskId = exportUrlTaskResponse.getId(); - // Wait for an export/url task to be finished final TaskResponse waitUrlExportTaskResponse = asyncCloudConvertClient.tasks().wait(exportUrlTaskId).get().getBody(); // Get a url of export/url task final String exportUrl = waitUrlExportTaskResponse.getResult().getFiles().get(0).get("url"); +final String filename = waitUrlExportTaskResponse.getResult().getFiles().get(0).get("filename"); // Get file as input stream using url of export/url task final InputStream inputStream = asyncCloudConvertClient.files().download(exportUrl).get().getBody(); + +// Save to local file +OutputStream outputStream = new FileOutputStream(new File(filename)); +IOUtils.copy(inputStream, outputStream); ``` ## Uploading Files @@ -189,7 +187,6 @@ final TaskResponse waitUploadImportTaskResponse = asyncCloudConvertClient.tasks( ## Signing Webhook The node SDK allows to verify webhook requests received from CloudConvert. -###### Default (synchronous) client ```java // Create a client final CloudConvertClient cloudConvertClient = new CloudConvertClient(); @@ -200,31 +197,10 @@ final String payload = "payload"; // The value of the "CloudConvert-Signature" header. final String signature = "signature"; -// You can find it in your webhook settings. -final String secret = "secret"; - // Returns true if signature is valid, and false if signature is invalid final boolean isValid = cloudConvertClient.webhooks().verify(payload, signature); ``` -###### Asynchronous client -```java -// Create a client -final AsyncCloudConvertClient asyncCloudConvertClient = new AsyncCloudConvertClient(); - -// The JSON payload from the raw request body. -final String payload = "payload"; - -// The value of the "CloudConvert-Signature" header. -final String signature = "signature"; - -// You can find it in your webhook settings. -final String secret = "secret"; - -// Returns true if signature is valid, and false if signature is invalid -final boolean isValid = asyncCloudConvertClient.webhooks().verify(payload, signature); -``` - ## Unit Tests ``` $ mvn clean install -U -Punit-tests From b543b728ade59a9daf1736dab2082f8817637aef Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Fri, 17 Apr 2020 21:24:52 +0200 Subject: [PATCH 03/51] Maven release --- README.md | 7 +- pom.xml | 108 +++++++++++++++++- .../com/cloudconvert/dto/request/Request.java | 2 +- 3 files changed, 114 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 2eeae30..f56cbdb 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,13 @@ This is the official Java SDK v2 for the [CloudConvert](https://cloudconvert.com/api/v2) _API v2_. ## Installation +Add the following dependency to your pom.xml: ``` -$ mvn clean install -U + + com.cloudconvert + cloudconvert-java + 1.0 + ``` ## Creating API Client diff --git a/pom.xml b/pom.xml index 5db81d4..af6747a 100644 --- a/pom.xml +++ b/pom.xml @@ -7,11 +7,49 @@ com.cloudconvert cloudconvert-java - 1.0.0-SNAPSHOT + 1.0.0 cloudconvert-java + CloudConvert is an online file converter API - more than 200 different audio, video, document, ebook, archive, image, spreadsheet and presentation formats supported. https://cloudconvert.com/api/v2 + + + The MIT License + https://raw.githubusercontent.com/ConvertAPI/convertapi-java/master/LICENSE.txt + repo + + + + + + Josias Montag + montag@lunaweb.de + Lunaweb GmbH + https://www.lunaweb.de + + + + + scm:git:git://github.com/cloudconvert/cloudconvert-java.git + scm:git:git@github.com:cloudconvert/cloudconvert-java.git + https://github.com/cloudconvert/cloudconvert-java + HEAD + + + + + ossrh + https://oss.sonatype.org/content/repositories/snapshots + + + ossrh + https://oss.sonatype.org/service/local/staging/deploy/maven2/ + + + + + UTF-8 1.8 @@ -37,6 +75,10 @@ 1.19.0 3.0.0-M3 + 1.6.7 + 3.1.0 + 3.1.1 + 1.6 @@ -163,6 +205,70 @@ ${test.groups} + + org.sonatype.plugins + nexus-staging-maven-plugin + ${nexus-staging-plugin.version} + true + + ossrh + https://oss.sonatype.org/ + true + + + + + org.apache.maven.plugins + maven-source-plugin + ${maven-source-plugin.version} + + + attach-sources + + jar-no-fork + + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + ${maven-javadoc-plugin.version} + + ${java.home}/bin/javadoc + + + + attach-javadocs + + jar + + + + + + + org.apache.maven.plugins + maven-gpg-plugin + ${maven-gpg-plugin.version} + + + sign-artifacts + verify + + sign + + + + + + --pinentry-mode + loopback + + + diff --git a/src/main/java/com/cloudconvert/dto/request/Request.java b/src/main/java/com/cloudconvert/dto/request/Request.java index d602044..ad42e5b 100644 --- a/src/main/java/com/cloudconvert/dto/request/Request.java +++ b/src/main/java/com/cloudconvert/dto/request/Request.java @@ -60,7 +60,7 @@ public Object getProperty(@NotNull final String key) { } /** - * Get specific option. Shortcut for {@link #getProperties()} + * Get specific option. Shortcut for {@link #getProperty(String)} * * @param key key * @return specific option value From 6f870a1e7dacb2840e43f7a42ed0e3788696dd4f Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Sat, 18 Apr 2020 18:55:46 +0200 Subject: [PATCH 04/51] travis: skip gpg signing --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 5e3e676..e5e25e0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,4 +4,5 @@ jdk: - openjdk8 - openjdk11 +install: mvn install -DskipTests=true -Dmaven.javadoc.skip=true -Dgpg.skip -B -V script: mvn clean compile -U && mvn test -Punit-tests && mvn test -Pintegration-tests From 140c1639f594bf04cb98e248ea057ae2a064eaee Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Wed, 15 Jul 2020 15:32:48 +0200 Subject: [PATCH 05/51] Add creating thumbnails support --- pom.xml | 2 +- .../client/AsyncCloudConvertClient.java | 17 +----- .../client/CloudConvertClient.java | 17 +----- .../java/com/cloudconvert/dto/Operation.java | 1 + .../request/CreateThumbnailsTaskRequest.java | 60 +++++++++++++++++++ .../AbstractCreateThumbnailsResource.java | 48 +++++++++++++++ .../resource/AbstractTasksResource.java | 22 ++++++- .../async/AsyncCreateThumbnailsResource.java | 41 +++++++++++++ .../resource/async/AsyncTasksResource.java | 20 ++++--- .../sync/CreateThumbnailsResource.java | 41 +++++++++++++ .../resource/sync/TasksResource.java | 28 +++++---- .../AsyncTasksIntegrationTest.java | 47 +++++++++++++-- .../integration/TasksIntegrationTest.java | 47 +++++++++++++-- .../test/unit/AsyncTasksUnitTest.java | 33 ++++++++-- .../cloudconvert/test/unit/TasksUnitTest.java | 33 ++++++++-- 15 files changed, 382 insertions(+), 75 deletions(-) create mode 100644 src/main/java/com/cloudconvert/dto/request/CreateThumbnailsTaskRequest.java create mode 100644 src/main/java/com/cloudconvert/resource/AbstractCreateThumbnailsResource.java create mode 100644 src/main/java/com/cloudconvert/resource/async/AsyncCreateThumbnailsResource.java create mode 100644 src/main/java/com/cloudconvert/resource/sync/CreateThumbnailsResource.java diff --git a/pom.xml b/pom.xml index af6747a..49a76d6 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ com.cloudconvert cloudconvert-java - 1.0.0 + 1.0.1 cloudconvert-java CloudConvert is an online file converter API - more than 200 different audio, video, document, ebook, archive, image, spreadsheet and presentation formats supported. diff --git a/src/main/java/com/cloudconvert/client/AsyncCloudConvertClient.java b/src/main/java/com/cloudconvert/client/AsyncCloudConvertClient.java index 0b26d8b..d8a1564 100644 --- a/src/main/java/com/cloudconvert/client/AsyncCloudConvertClient.java +++ b/src/main/java/com/cloudconvert/client/AsyncCloudConvertClient.java @@ -13,19 +13,7 @@ import com.cloudconvert.dto.result.AsyncResult; import com.cloudconvert.executor.AsyncRequestExecutor; import com.cloudconvert.extractor.ResultExtractor; -import com.cloudconvert.resource.async.AsyncCaptureWebsitesResource; -import com.cloudconvert.resource.async.AsyncConvertFilesResource; -import com.cloudconvert.resource.async.AsyncCreateArchivesResource; -import com.cloudconvert.resource.async.AsyncExecuteCommandsResource; -import com.cloudconvert.resource.async.AsyncExportFilesResource; -import com.cloudconvert.resource.async.AsyncFilesResource; -import com.cloudconvert.resource.async.AsyncImportFilesResource; -import com.cloudconvert.resource.async.AsyncJobsResource; -import com.cloudconvert.resource.async.AsyncMergeFilesResource; -import com.cloudconvert.resource.async.AsyncOptimizeFilesResource; -import com.cloudconvert.resource.async.AsyncTasksResource; -import com.cloudconvert.resource.async.AsyncUsersResource; -import com.cloudconvert.resource.async.AsyncWebhookResource; +import com.cloudconvert.resource.async.*; import java.io.IOException; import java.io.InputStream; @@ -61,7 +49,8 @@ public AsyncCloudConvertClient( new AsyncCaptureWebsitesResource(settingsProvider, objectMapperProvider, asyncRequestExecutor), new AsyncMergeFilesResource(settingsProvider, objectMapperProvider, asyncRequestExecutor), new AsyncCreateArchivesResource(settingsProvider, objectMapperProvider, asyncRequestExecutor), - new AsyncExecuteCommandsResource(settingsProvider, objectMapperProvider, asyncRequestExecutor) + new AsyncExecuteCommandsResource(settingsProvider, objectMapperProvider, asyncRequestExecutor), + new AsyncCreateThumbnailsResource(settingsProvider, objectMapperProvider, asyncRequestExecutor) ), new AsyncJobsResource(settingsProvider, objectMapperProvider, asyncRequestExecutor) ); diff --git a/src/main/java/com/cloudconvert/client/CloudConvertClient.java b/src/main/java/com/cloudconvert/client/CloudConvertClient.java index 0bd24bc..5117517 100644 --- a/src/main/java/com/cloudconvert/client/CloudConvertClient.java +++ b/src/main/java/com/cloudconvert/client/CloudConvertClient.java @@ -13,19 +13,7 @@ import com.cloudconvert.dto.result.Result; import com.cloudconvert.executor.RequestExecutor; import com.cloudconvert.extractor.ResultExtractor; -import com.cloudconvert.resource.sync.CaptureWebsitesResource; -import com.cloudconvert.resource.sync.ConvertFilesResource; -import com.cloudconvert.resource.sync.CreateArchivesResource; -import com.cloudconvert.resource.sync.ExecuteCommandsResource; -import com.cloudconvert.resource.sync.ExportFilesResource; -import com.cloudconvert.resource.sync.FilesResource; -import com.cloudconvert.resource.sync.ImportFilesResource; -import com.cloudconvert.resource.sync.JobsResource; -import com.cloudconvert.resource.sync.MergeFilesResource; -import com.cloudconvert.resource.sync.OptimizeFilesResource; -import com.cloudconvert.resource.sync.TasksResource; -import com.cloudconvert.resource.sync.UsersResource; -import com.cloudconvert.resource.sync.WebhookResource; +import com.cloudconvert.resource.sync.*; import java.io.IOException; import java.io.InputStream; @@ -62,7 +50,8 @@ public CloudConvertClient( new CaptureWebsitesResource(settingsProvider, objectMapperProvider, requestExecutor), new MergeFilesResource(settingsProvider, objectMapperProvider, requestExecutor), new CreateArchivesResource(settingsProvider, objectMapperProvider, requestExecutor), - new ExecuteCommandsResource(settingsProvider, objectMapperProvider, requestExecutor) + new ExecuteCommandsResource(settingsProvider, objectMapperProvider, requestExecutor), + new CreateThumbnailsResource(settingsProvider, objectMapperProvider, requestExecutor) ), new JobsResource(settingsProvider, objectMapperProvider, requestExecutor) ); diff --git a/src/main/java/com/cloudconvert/dto/Operation.java b/src/main/java/com/cloudconvert/dto/Operation.java index 52ee515..d700051 100644 --- a/src/main/java/com/cloudconvert/dto/Operation.java +++ b/src/main/java/com/cloudconvert/dto/Operation.java @@ -12,6 +12,7 @@ public enum Operation { ARCHIVE("archive"), ARCHIVE_EXTRACT("archive/extract"), COMMAND("command"), + THUMBNAIL("thumbnail"), IMPORT_URL("import/url"), IMPORT_UPLOAD("import/upload"), diff --git a/src/main/java/com/cloudconvert/dto/request/CreateThumbnailsTaskRequest.java b/src/main/java/com/cloudconvert/dto/request/CreateThumbnailsTaskRequest.java new file mode 100644 index 0000000..0a97e07 --- /dev/null +++ b/src/main/java/com/cloudconvert/dto/request/CreateThumbnailsTaskRequest.java @@ -0,0 +1,60 @@ +package com.cloudconvert.dto.request; + +import com.cloudconvert.dto.Operation; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +@Getter +@Setter +@Accessors(chain = true) +@ToString +@EqualsAndHashCode(callSuper = true) +public class CreateThumbnailsTaskRequest extends TaskRequest { + + /** + * (required) The ID of the input task for the conversion, normally the import task. Multiple task IDs can be provided as an array. + */ + private List input; + + /** + * (optional) The current format of the file, e.g. pdf. If not set, the extension of the input file is used as input format. + */ + private String inputFormat; + + /** + * (required) The target format to create the thumbnail. + */ + private String outputFormat; + + /** + * (optional) Use a specific engine for the conversion. + */ + private String engine; + + /** + * (optional) Use a specific engine version for the conversion. + */ + private String engineVersion; + + /** + * (optional) Choose a filename (including extension) for the output file. + */ + private String filename; + + public CreateThumbnailsTaskRequest setInput(final String... input) { + this.input = Arrays.stream(input).collect(Collectors.toList()); + return this; + } + + @Override + public Operation getOperation() { + return Operation.THUMBNAIL; + } +} diff --git a/src/main/java/com/cloudconvert/resource/AbstractCreateThumbnailsResource.java b/src/main/java/com/cloudconvert/resource/AbstractCreateThumbnailsResource.java new file mode 100644 index 0000000..1e1e8da --- /dev/null +++ b/src/main/java/com/cloudconvert/resource/AbstractCreateThumbnailsResource.java @@ -0,0 +1,48 @@ +package com.cloudconvert.resource; + +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.AbstractResult; +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 AbstractCreateThumbnailsResource> extends AbstractResource { + + public static final String PATH_SEGMENT_CREATE_THUMBNAIL = "thumbnail"; + + public AbstractCreateThumbnailsResource( + final SettingsProvider settingsProvider, final ObjectMapperProvider objectMapperProvider + ) { + super(settingsProvider, objectMapperProvider); + } + + /** + * Create a task to create a thumbnail (png, jpg). + * + * @param createThumbnailsTaskRequest {@link CreateThumbnailsTaskRequest} + * @return {@link TRAR} + * @throws IOException + * @throws URISyntaxException + */ + public abstract TRAR thumbnail( + @NotNull final CreateThumbnailsTaskRequest createThumbnailsTaskRequest + ) throws IOException, URISyntaxException; + + protected HttpUriRequest getThumbnailHttpUriRequest( + @NotNull final CreateThumbnailsTaskRequest createThumbnailsTaskRequest + ) throws IOException, URISyntaxException { + final URI uri = getUri(ImmutableList.of(PATH_SEGMENT_CREATE_THUMBNAIL)); + final HttpEntity httpEntity = getHttpEntity(createThumbnailsTaskRequest); + + return getHttpUriRequest(HttpPost.class, uri, httpEntity); + } +} diff --git a/src/main/java/com/cloudconvert/resource/AbstractTasksResource.java b/src/main/java/com/cloudconvert/resource/AbstractTasksResource.java index dd63a4c..f8c8528 100644 --- a/src/main/java/com/cloudconvert/resource/AbstractTasksResource.java +++ b/src/main/java/com/cloudconvert/resource/AbstractTasksResource.java @@ -8,6 +8,7 @@ import com.cloudconvert.dto.request.ExecuteCommandsTaskRequest; import com.cloudconvert.dto.request.MergeFilesTaskRequest; import com.cloudconvert.dto.request.OptimizeFilesTaskRequest; +import com.cloudconvert.dto.request.CreateThumbnailsTaskRequest; import com.cloudconvert.dto.response.OperationResponse; import com.cloudconvert.dto.response.Pageable; import com.cloudconvert.dto.response.TaskResponse; @@ -63,6 +64,9 @@ public abstract class AbstractTasksResource abstractExecuteCommandsResource; + @Getter + private final AbstractCreateThumbnailsResource abstractCreateThumbnailsResource; + private final IncludesToNameValuePairsConverter includesToNameValuePairsConverter; private final FiltersToNameValuePairsConverter filtersToNameValuePairsConverter; private final AlternativeToNameValuePairsConverter alternativeToNameValuePairsConverter; @@ -72,7 +76,8 @@ 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 ) { super(settingsProvider, objectMapperProvider); @@ -82,6 +87,7 @@ public AbstractTasksResource( this.abstractMergeFilesResource = abstractMergeFilesResource; this.abstractCreateArchivesResource = abstractCreateArchivesResource; this.abstractExecuteCommandsResource = abstractExecuteCommandsResource; + this.abstractCreateThumbnailsResource = abstractCreateThumbnailsResource; this.includesToNameValuePairsConverter = new IncludesToNameValuePairsConverter(); this.filtersToNameValuePairsConverter = new FiltersToNameValuePairsConverter(); @@ -491,6 +497,19 @@ public abstract TRAR command( @NotNull final ExecuteCommandsTaskRequest executeCommandsTaskRequest ) throws IOException, URISyntaxException; + /** + * Create a task to convert one input file from input_format to output_format. 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; + + @Override public void close() throws IOException { abstractConvertFilesResource.close(); @@ -499,5 +518,6 @@ public void close() throws IOException { abstractMergeFilesResource.close(); abstractCreateArchivesResource.close(); abstractExecuteCommandsResource.close(); + abstractCreateThumbnailsResource.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/AsyncTasksResource.java b/src/main/java/com/cloudconvert/resource/async/AsyncTasksResource.java index 4281342..1da9d7f 100644 --- a/src/main/java/com/cloudconvert/resource/async/AsyncTasksResource.java +++ b/src/main/java/com/cloudconvert/resource/async/AsyncTasksResource.java @@ -2,12 +2,7 @@ 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; @@ -38,10 +33,11 @@ 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 ) { super(settingsProvider, objectMapperProvider, asyncConvertFilesResource, asyncOptimizeFilesResource, asyncCaptureWebsitesResource, - asyncMergeFilesResource, asyncCreateArchivesResource, asyncExecuteCommandsResource); + asyncMergeFilesResource, asyncCreateArchivesResource, asyncExecuteCommandsResource, asyncCreateThumbnailsResource); this.asyncRequestExecutor = asyncRequestExecutor; } @@ -196,6 +192,14 @@ public AsyncResult command( return getAbstractExecuteCommandsResource().command(executeCommandsTaskRequest); } + @Override + public AsyncResult thumbnail( + @NotNull final CreateThumbnailsTaskRequest createThumbnailsTaskRequest + ) throws IOException, URISyntaxException { + return getAbstractCreateThumbnailsResource().thumbnail(createThumbnailsTaskRequest); + } + + @Override public void close() throws IOException { asyncRequestExecutor.close(); diff --git a/src/main/java/com/cloudconvert/resource/sync/CreateThumbnailsResource.java b/src/main/java/com/cloudconvert/resource/sync/CreateThumbnailsResource.java new file mode 100644 index 0000000..cb9297f --- /dev/null +++ b/src/main/java/com/cloudconvert/resource/sync/CreateThumbnailsResource.java @@ -0,0 +1,41 @@ +package com.cloudconvert.resource.sync; + +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.Result; +import com.cloudconvert.executor.RequestExecutor; +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 CreateThumbnailsResource extends AbstractCreateThumbnailsResource> { + + private final RequestExecutor requestExecutor; + + public CreateThumbnailsResource( + final SettingsProvider settingsProvider, + final ObjectMapperProvider objectMapperProvider, final RequestExecutor requestExecutor + ) { + super(settingsProvider, objectMapperProvider); + + this.requestExecutor = requestExecutor; + } + + @Override + public Result thumbnail( + @NotNull final CreateThumbnailsTaskRequest createThumbnailsTaskRequest + ) throws IOException, URISyntaxException { + return requestExecutor.execute(getThumbnailHttpUriRequest(createThumbnailsTaskRequest), TASK_RESPONSE_TYPE_REFERENCE); + } + + @Override + public void close() throws IOException { + requestExecutor.close(); + } +} diff --git a/src/main/java/com/cloudconvert/resource/sync/TasksResource.java b/src/main/java/com/cloudconvert/resource/sync/TasksResource.java index 0c53218..95fd620 100644 --- a/src/main/java/com/cloudconvert/resource/sync/TasksResource.java +++ b/src/main/java/com/cloudconvert/resource/sync/TasksResource.java @@ -2,12 +2,7 @@ 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; @@ -36,14 +31,15 @@ public class TasksResource extends AbstractTasksResource, private final RequestExecutor requestExecutor; public TasksResource( - final SettingsProvider settingsProvider, - final ObjectMapperProvider objectMapperProvider, final RequestExecutor requestExecutor, - final ConvertFilesResource convertFilesResource, final OptimizeFilesResource optimizeFilesResource, - final CaptureWebsitesResource captureWebsitesResource, final MergeFilesResource mergeFilesResource, - final CreateArchivesResource createArchivesResource, final ExecuteCommandsResource executeCommandsResource - ) { + final SettingsProvider settingsProvider, + final ObjectMapperProvider objectMapperProvider, final RequestExecutor requestExecutor, + final ConvertFilesResource convertFilesResource, final OptimizeFilesResource optimizeFilesResource, + final CaptureWebsitesResource captureWebsitesResource, final MergeFilesResource mergeFilesResource, + final CreateArchivesResource createArchivesResource, final ExecuteCommandsResource executeCommandsResource, + final CreateThumbnailsResource createThumbnailsResource + ) { super(settingsProvider, objectMapperProvider, convertFilesResource, optimizeFilesResource, captureWebsitesResource, - mergeFilesResource, createArchivesResource, executeCommandsResource); + mergeFilesResource, createArchivesResource, executeCommandsResource, createThumbnailsResource); this.requestExecutor = requestExecutor; } @@ -200,6 +196,12 @@ public Result command( return getAbstractExecuteCommandsResource().command(executeCommandsTaskRequest); } + @Override + public Result thumbnail(@NotNull CreateThumbnailsTaskRequest createThumbnailsTaskRequest + ) throws IOException, URISyntaxException { + return getAbstractCreateThumbnailsResource().thumbnail(createThumbnailsTaskRequest); + } + @Override public void close() throws IOException { requestExecutor.close(); diff --git a/src/test/java/com/cloudconvert/test/integration/AsyncTasksIntegrationTest.java b/src/test/java/com/cloudconvert/test/integration/AsyncTasksIntegrationTest.java index 7aa5d5f..457fbd9 100644 --- a/src/test/java/com/cloudconvert/test/integration/AsyncTasksIntegrationTest.java +++ b/src/test/java/com/cloudconvert/test/integration/AsyncTasksIntegrationTest.java @@ -3,12 +3,7 @@ import com.cloudconvert.client.AsyncCloudConvertClient; import com.cloudconvert.dto.Operation; import com.cloudconvert.dto.Status; -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.OptimizeFilesTaskRequest; -import com.cloudconvert.dto.request.UploadImportRequest; +import com.cloudconvert.dto.request.*; import com.cloudconvert.dto.response.OperationResponse; import com.cloudconvert.dto.response.Pageable; import com.cloudconvert.dto.response.TaskResponse; @@ -259,6 +254,46 @@ public void executeCommandTaskLifecycle() throws Exception { assertThat(deleteVoidResult.getStatus()).isEqualTo(HttpStatus.SC_NO_CONTENT); } + @Test(timeout = TIMEOUT) + public void createThumbnailTaskLifecycle() throws Exception { + // Import upload (immediate upload) + final Result uploadImportTaskResponseResult = asyncCloudConvertClient.importUsing().upload(new UploadImportRequest(), jpgTest1InputStream).get(); + assertThat(uploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + + final TaskResponse uploadImportTaskResponse = uploadImportTaskResponseResult.getBody(); + assertThat(uploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); + + // Convert + final CreateThumbnailsTaskRequest createThumbnailsTaskRequest = new CreateThumbnailsTaskRequest().setInput(uploadImportTaskResponse.getId()).setInputFormat(JPG).setOutputFormat(PNG); + final Result thumbnailTaskResponseResult = asyncCloudConvertClient.tasks().thumbnail(createThumbnailsTaskRequest).get(); + assertThat(thumbnailTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + + final TaskResponse thumbnailTaskResponse = thumbnailTaskResponseResult.getBody(); + assertThat(thumbnailTaskResponse.getOperation()).isEqualTo(Operation.THUMBNAIL); + + // Wait + final Result waitThumbnailTaskResponseResult = asyncCloudConvertClient.tasks().wait(thumbnailTaskResponse.getId()).get(); + assertThat(waitThumbnailTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + + final TaskResponse waitThumbnailTaskResponse = waitThumbnailTaskResponseResult.getBody(); + assertThat(waitThumbnailTaskResponse.getOperation()).isEqualTo(Operation.THUMBNAIL); + assertThat(waitThumbnailTaskResponse.getStatus()).isEqualTo(Status.FINISHED); + assertThat(waitThumbnailTaskResponse.getId()).isEqualTo(thumbnailTaskResponse.getId()); + + // Show + final Result showConvertTaskResponseResult = asyncCloudConvertClient.tasks().show(thumbnailTaskResponse.getId()).get(); + assertThat(showConvertTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + + final TaskResponse showConvertTaskResponse = showConvertTaskResponseResult.getBody(); + assertThat(showConvertTaskResponse.getOperation()).isEqualTo(Operation.THUMBNAIL); + assertThat(showConvertTaskResponse.getStatus()).isEqualTo(Status.FINISHED); + assertThat(showConvertTaskResponse.getId()).isEqualTo(thumbnailTaskResponse.getId()); + + // Delete + final Result deleteVoidResult = asyncCloudConvertClient.tasks().delete(thumbnailTaskResponse.getId()).get(); + assertThat(deleteVoidResult.getStatus()).isEqualTo(HttpStatus.SC_NO_CONTENT); + } + @Test(timeout = TIMEOUT) public void listTasksLifecycle() throws Exception { // List operations diff --git a/src/test/java/com/cloudconvert/test/integration/TasksIntegrationTest.java b/src/test/java/com/cloudconvert/test/integration/TasksIntegrationTest.java index f6d4d8e..5fcd873 100644 --- a/src/test/java/com/cloudconvert/test/integration/TasksIntegrationTest.java +++ b/src/test/java/com/cloudconvert/test/integration/TasksIntegrationTest.java @@ -3,12 +3,7 @@ import com.cloudconvert.client.CloudConvertClient; import com.cloudconvert.dto.Operation; import com.cloudconvert.dto.Status; -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.OptimizeFilesTaskRequest; -import com.cloudconvert.dto.request.UploadImportRequest; +import com.cloudconvert.dto.request.*; import com.cloudconvert.dto.response.OperationResponse; import com.cloudconvert.dto.response.Pageable; import com.cloudconvert.dto.response.TaskResponse; @@ -256,6 +251,46 @@ public void executeCommandTaskLifecycle() throws Exception { assertThat(deleteVoidResult.getStatus()).isEqualTo(HttpStatus.SC_NO_CONTENT); } + @Test(timeout = TIMEOUT) + public void thumbnailFileTaskLifecycle() throws Exception { + // Import upload (immediate upload) + final Result uploadImportTaskResponseResult = cloudConvertClient.importUsing().upload(new UploadImportRequest(), jpgTest1InputStream); + assertThat(uploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + + final TaskResponse uploadImportTaskResponse = uploadImportTaskResponseResult.getBody(); + assertThat(uploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); + + // Thumbnail + final CreateThumbnailsTaskRequest createThumbnailsTaskRequest = new CreateThumbnailsTaskRequest().setInput(uploadImportTaskResponse.getId()).setInputFormat(JPG).setOutputFormat(PNG); + final Result thumbnailTaskResponseResult = cloudConvertClient.tasks().thumbnail(createThumbnailsTaskRequest); + assertThat(thumbnailTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + + final TaskResponse thumbnailTaskResponse = thumbnailTaskResponseResult.getBody(); + assertThat(thumbnailTaskResponse.getOperation()).isEqualTo(Operation.THUMBNAIL); + + // Wait + final Result waitThumbnailTaskResponseResult = cloudConvertClient.tasks().wait(thumbnailTaskResponse.getId()); + assertThat(waitThumbnailTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + + final TaskResponse waitThumbnailTaskResponse = waitThumbnailTaskResponseResult.getBody(); + assertThat(waitThumbnailTaskResponse.getOperation()).isEqualTo(Operation.THUMBNAIL); + assertThat(waitThumbnailTaskResponse.getStatus()).isEqualTo(Status.FINISHED); + assertThat(waitThumbnailTaskResponse.getId()).isEqualTo(thumbnailTaskResponse.getId()); + + // Show + final Result showThumbnailTaskResponseResult = cloudConvertClient.tasks().show(thumbnailTaskResponse.getId()); + assertThat(showThumbnailTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + + final TaskResponse showThumbnailTaskResponse = showThumbnailTaskResponseResult.getBody(); + assertThat(showThumbnailTaskResponse.getOperation()).isEqualTo(Operation.THUMBNAIL); + assertThat(showThumbnailTaskResponse.getStatus()).isEqualTo(Status.FINISHED); + assertThat(showThumbnailTaskResponse.getId()).isEqualTo(thumbnailTaskResponse.getId()); + + // Delete + final Result deleteVoidResult = cloudConvertClient.tasks().delete(thumbnailTaskResponse.getId()); + assertThat(deleteVoidResult.getStatus()).isEqualTo(HttpStatus.SC_NO_CONTENT); + } + @Test(timeout = TIMEOUT) public void listTasksLifecycle() throws Exception { // List operations diff --git a/src/test/java/com/cloudconvert/test/unit/AsyncTasksUnitTest.java b/src/test/java/com/cloudconvert/test/unit/AsyncTasksUnitTest.java index b44bb03..25f3fb4 100644 --- a/src/test/java/com/cloudconvert/test/unit/AsyncTasksUnitTest.java +++ b/src/test/java/com/cloudconvert/test/unit/AsyncTasksUnitTest.java @@ -3,12 +3,7 @@ import com.cloudconvert.client.AsyncCloudConvertClient; 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; @@ -497,6 +492,32 @@ public void tasks_command() throws Exception { assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); } + @Test + public void tasks_thumbnail() throws Exception { + final CreateThumbnailsTaskRequest expectedCreateThumbnailsTaskRequest = new CreateThumbnailsTaskRequest().setInput("execute-commands-task-input"); + final AsyncResult taskResponseAsyncResult = FutureAsyncResult.builder().build(); + when(asyncRequestExecutor.execute(any(HttpUriRequest.class), eq(AbstractResource.TASK_RESPONSE_TYPE_REFERENCE))).thenReturn(taskResponseAsyncResult); + + assertThat(asyncCloudConvertClient.tasks().thumbnail(expectedCreateThumbnailsTaskRequest)).isEqualTo(taskResponseAsyncResult); + verify(asyncRequestExecutor, times(1)).execute(httpUriRequestArgumentCaptor.capture(), eq(AbstractResource.TASK_RESPONSE_TYPE_REFERENCE)); + + final HttpUriRequest httpUriRequest = httpUriRequestArgumentCaptor.getValue(); + + assertThat(httpUriRequest).isNotNull(); + assertThat(httpUriRequest.getMethod()).isEqualTo(HttpPost.METHOD_NAME); + assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_URL + "/" + AbstractResource.V2 + "/thumbnail"); + assertThat(httpUriRequest).isInstanceOfSatisfying(HttpEntityEnclosingRequestBase.class, httpEntityEnclosingRequestBase -> { + final ExecuteCommandsTaskRequest actualExecuteCommandsTaskRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() + .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), ExecuteCommandsTaskRequest.class)).get(); + + assertThat(actualExecuteCommandsTaskRequest.getInput()).isEqualTo(expectedCreateThumbnailsTaskRequest.getInput()); + }); + assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> + assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); + assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_USER_AGENT)).hasSize(1).allSatisfy(header -> + assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); + } + @After public void after() throws Exception { asyncCloudConvertClient.close(); diff --git a/src/test/java/com/cloudconvert/test/unit/TasksUnitTest.java b/src/test/java/com/cloudconvert/test/unit/TasksUnitTest.java index acd4480..bb24d33 100644 --- a/src/test/java/com/cloudconvert/test/unit/TasksUnitTest.java +++ b/src/test/java/com/cloudconvert/test/unit/TasksUnitTest.java @@ -3,12 +3,7 @@ import com.cloudconvert.client.CloudConvertClient; 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; @@ -496,6 +491,32 @@ public void tasks_command() throws Exception { assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); } + @Test + public void tasks_thumbnail() throws Exception { + final CreateThumbnailsTaskRequest expectedCreateThumbnailsTaskRequest = new CreateThumbnailsTaskRequest().setInput("execute-commands-task-input"); + final Result taskResponseResult = Result.builder().build(); + when(requestExecutor.execute(any(HttpUriRequest.class), eq(AbstractResource.TASK_RESPONSE_TYPE_REFERENCE))).thenReturn(taskResponseResult); + + assertThat(cloudConvertClient.tasks().thumbnail(expectedCreateThumbnailsTaskRequest)).isEqualTo(taskResponseResult); + verify(requestExecutor, times(1)).execute(httpUriRequestArgumentCaptor.capture(), eq(AbstractResource.TASK_RESPONSE_TYPE_REFERENCE)); + + final HttpUriRequest httpUriRequest = httpUriRequestArgumentCaptor.getValue(); + + assertThat(httpUriRequest).isNotNull(); + assertThat(httpUriRequest.getMethod()).isEqualTo(HttpPost.METHOD_NAME); + assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_URL + "/" + AbstractResource.V2 + "/thumbnail"); + assertThat(httpUriRequest).isInstanceOfSatisfying(HttpEntityEnclosingRequestBase.class, httpEntityEnclosingRequestBase -> { + final ExecuteCommandsTaskRequest actualExecuteCommandsTaskRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() + .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), ExecuteCommandsTaskRequest.class)).get(); + + assertThat(actualExecuteCommandsTaskRequest.getInput()).isEqualTo(expectedCreateThumbnailsTaskRequest.getInput()); + }); + assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> + assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); + assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_USER_AGENT)).hasSize(1).allSatisfy(header -> + assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); + } + @After public void after() throws Exception { cloudConvertClient.close(); From c5d33527e6bb8ec12f9ae5accb304a4011e99135 Mon Sep 17 00:00:00 2001 From: Alessandro Falappa Date: Fri, 2 Oct 2020 18:28:18 +0200 Subject: [PATCH 06/51] Use SLF4J stable (1.7.30) Fixes #21 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 49a76d6..186c699 100644 --- a/pom.xml +++ b/pom.xml @@ -62,7 +62,7 @@ 2.10.3 - 2.0.0-alpha1 + 1.7.30 19.0.0 28.2-jre From 8b67a1646d495e49854421c2e61383076ed4c288 Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Sat, 3 Oct 2020 12:59:57 +0200 Subject: [PATCH 07/51] Bump version --- README.md | 2 +- pom.xml | 7 ++----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index f56cbdb..d2a2cc8 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Add the following dependency to your pom.xml: com.cloudconvert cloudconvert-java - 1.0 + 1.0.2 ``` diff --git a/pom.xml b/pom.xml index 186c699..1f9b1c3 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ com.cloudconvert cloudconvert-java - 1.0.1 + 1.0.2 cloudconvert-java CloudConvert is an online file converter API - more than 200 different audio, video, document, ebook, archive, image, spreadsheet and presentation formats supported. @@ -263,10 +263,7 @@ - - --pinentry-mode - loopback - + From c565a8f7b015948ed5ec46e715cd578c484e2e5d Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Fri, 9 Oct 2020 11:20:45 +0200 Subject: [PATCH 08/51] Add get metadata support --- README.md | 2 +- pom.xml | 2 +- .../client/AsyncCloudConvertClient.java | 3 +- .../client/CloudConvertClient.java | 3 +- .../java/com/cloudconvert/dto/Operation.java | 1 + .../dto/request/GetMetadataTaskRequest.java | 51 +++++++++++++++++++ .../dto/response/TaskResponse.java | 4 ++ .../resource/AbstractGetMetadataResource.java | 48 +++++++++++++++++ .../resource/AbstractTasksResource.java | 29 +++++++---- .../async/AsyncGetMetadataResource.java | 41 +++++++++++++++ .../resource/async/AsyncTasksResource.java | 10 +++- .../resource/sync/GetMetadataResource.java | 41 +++++++++++++++ .../resource/sync/TasksResource.java | 10 +++- .../AsyncTasksIntegrationTest.java | 41 +++++++++++++++ .../integration/TasksIntegrationTest.java | 43 ++++++++++++++++ .../test/unit/AsyncTasksUnitTest.java | 27 ++++++++++ .../cloudconvert/test/unit/TasksUnitTest.java | 27 ++++++++++ 17 files changed, 366 insertions(+), 17 deletions(-) create mode 100644 src/main/java/com/cloudconvert/dto/request/GetMetadataTaskRequest.java create mode 100644 src/main/java/com/cloudconvert/resource/AbstractGetMetadataResource.java create mode 100644 src/main/java/com/cloudconvert/resource/async/AsyncGetMetadataResource.java create mode 100644 src/main/java/com/cloudconvert/resource/sync/GetMetadataResource.java diff --git a/README.md b/README.md index d2a2cc8..00551b2 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Add the following dependency to your pom.xml: com.cloudconvert cloudconvert-java - 1.0.2 + 1.0.3 ``` diff --git a/pom.xml b/pom.xml index 1f9b1c3..6b5a687 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ com.cloudconvert cloudconvert-java - 1.0.2 + 1.0.3 cloudconvert-java CloudConvert is an online file converter API - more than 200 different audio, video, document, ebook, archive, image, spreadsheet and presentation formats supported. diff --git a/src/main/java/com/cloudconvert/client/AsyncCloudConvertClient.java b/src/main/java/com/cloudconvert/client/AsyncCloudConvertClient.java index d8a1564..6c22cf4 100644 --- a/src/main/java/com/cloudconvert/client/AsyncCloudConvertClient.java +++ b/src/main/java/com/cloudconvert/client/AsyncCloudConvertClient.java @@ -50,7 +50,8 @@ public AsyncCloudConvertClient( new AsyncMergeFilesResource(settingsProvider, objectMapperProvider, asyncRequestExecutor), new AsyncCreateArchivesResource(settingsProvider, objectMapperProvider, asyncRequestExecutor), new AsyncExecuteCommandsResource(settingsProvider, objectMapperProvider, asyncRequestExecutor), - new AsyncCreateThumbnailsResource(settingsProvider, objectMapperProvider, asyncRequestExecutor) + new AsyncCreateThumbnailsResource(settingsProvider, objectMapperProvider, asyncRequestExecutor), + new AsyncGetMetadataResource(settingsProvider, objectMapperProvider, asyncRequestExecutor) ), new AsyncJobsResource(settingsProvider, objectMapperProvider, asyncRequestExecutor) ); diff --git a/src/main/java/com/cloudconvert/client/CloudConvertClient.java b/src/main/java/com/cloudconvert/client/CloudConvertClient.java index 5117517..4c329d4 100644 --- a/src/main/java/com/cloudconvert/client/CloudConvertClient.java +++ b/src/main/java/com/cloudconvert/client/CloudConvertClient.java @@ -51,7 +51,8 @@ public CloudConvertClient( new MergeFilesResource(settingsProvider, objectMapperProvider, requestExecutor), new CreateArchivesResource(settingsProvider, objectMapperProvider, requestExecutor), new ExecuteCommandsResource(settingsProvider, objectMapperProvider, requestExecutor), - new CreateThumbnailsResource(settingsProvider, objectMapperProvider, requestExecutor) + new CreateThumbnailsResource(settingsProvider, objectMapperProvider, requestExecutor), + new GetMetadataResource(settingsProvider, objectMapperProvider, requestExecutor) ), new JobsResource(settingsProvider, objectMapperProvider, requestExecutor) ); diff --git a/src/main/java/com/cloudconvert/dto/Operation.java b/src/main/java/com/cloudconvert/dto/Operation.java index d700051..09178f3 100644 --- a/src/main/java/com/cloudconvert/dto/Operation.java +++ b/src/main/java/com/cloudconvert/dto/Operation.java @@ -13,6 +13,7 @@ public enum Operation { ARCHIVE_EXTRACT("archive/extract"), COMMAND("command"), THUMBNAIL("thumbnail"), + METADATA("metadata"), IMPORT_URL("import/url"), IMPORT_UPLOAD("import/upload"), diff --git a/src/main/java/com/cloudconvert/dto/request/GetMetadataTaskRequest.java b/src/main/java/com/cloudconvert/dto/request/GetMetadataTaskRequest.java new file mode 100644 index 0000000..85d414e --- /dev/null +++ b/src/main/java/com/cloudconvert/dto/request/GetMetadataTaskRequest.java @@ -0,0 +1,51 @@ +package com.cloudconvert.dto.request; + +import com.cloudconvert.dto.Operation; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +@Getter +@Setter +@Accessors(chain = true) +@ToString +@EqualsAndHashCode(callSuper = true) +public class GetMetadataTaskRequest extends TaskRequest { + + /** + * (required) The ID of the input task for the conversion, normally the import task. Multiple task IDs can be provided as an array. + */ + private List input; + + /** + * (optional) The current format of the file, e.g. pdf. If not set, the extension of the input file is used as input format. + */ + private String inputFormat; + + /** + * (optional) Use a specific engine for the conversion. + */ + private String engine; + + /** + * (optional) Use a specific engine version for the conversion. + */ + private String engineVersion; + + + public GetMetadataTaskRequest setInput(final String... input) { + this.input = Arrays.stream(input).collect(Collectors.toList()); + return this; + } + + @Override + public Operation getOperation() { + return Operation.METADATA; + } +} diff --git a/src/main/java/com/cloudconvert/dto/response/TaskResponse.java b/src/main/java/com/cloudconvert/dto/response/TaskResponse.java index b922351..7394168 100644 --- a/src/main/java/com/cloudconvert/dto/response/TaskResponse.java +++ b/src/main/java/com/cloudconvert/dto/response/TaskResponse.java @@ -145,6 +145,10 @@ public static class Form { private Map parameters; } + + + private Map metadata; + } diff --git a/src/main/java/com/cloudconvert/resource/AbstractGetMetadataResource.java b/src/main/java/com/cloudconvert/resource/AbstractGetMetadataResource.java new file mode 100644 index 0000000..581b7dc --- /dev/null +++ b/src/main/java/com/cloudconvert/resource/AbstractGetMetadataResource.java @@ -0,0 +1,48 @@ +package com.cloudconvert.resource; + +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.AbstractResult; +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 AbstractGetMetadataResource> extends AbstractResource { + + public static final String PATH_SEGMENT_METADATA = "metadata"; + + public AbstractGetMetadataResource( + final SettingsProvider settingsProvider, final ObjectMapperProvider objectMapperProvider + ) { + super(settingsProvider, objectMapperProvider); + } + + /** + * Create a task to optimize and compress a file. Currently supported formats are PDF, PNG and JPG. + * + * @param getMetadataTaskRequest {@link GetMetadataTaskRequest} + * @return {@link TRAR} + * @throws IOException + * @throws URISyntaxException + */ + public abstract TRAR metadata( + @NotNull final GetMetadataTaskRequest getMetadataTaskRequest + ) throws IOException, URISyntaxException; + + protected HttpUriRequest getMetadataHttpUriRequest( + @NotNull final GetMetadataTaskRequest getMetadataTaskRequest + ) throws IOException, URISyntaxException { + final URI uri = getUri(ImmutableList.of(PATH_SEGMENT_METADATA)); + final HttpEntity httpEntity = getHttpEntity(getMetadataTaskRequest); + + return getHttpUriRequest(HttpPost.class, uri, httpEntity); + } +} diff --git a/src/main/java/com/cloudconvert/resource/AbstractTasksResource.java b/src/main/java/com/cloudconvert/resource/AbstractTasksResource.java index f8c8528..0f92071 100644 --- a/src/main/java/com/cloudconvert/resource/AbstractTasksResource.java +++ b/src/main/java/com/cloudconvert/resource/AbstractTasksResource.java @@ -2,13 +2,7 @@ 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.CreateThumbnailsTaskRequest; +import com.cloudconvert.dto.request.*; import com.cloudconvert.dto.response.OperationResponse; import com.cloudconvert.dto.response.Pageable; import com.cloudconvert.dto.response.TaskResponse; @@ -67,6 +61,9 @@ public abstract class AbstractTasksResource abstractCreateThumbnailsResource; + @Getter + private final AbstractGetMetadataResource abstractGetMetadataResource; + private final IncludesToNameValuePairsConverter includesToNameValuePairsConverter; private final FiltersToNameValuePairsConverter filtersToNameValuePairsConverter; private final AlternativeToNameValuePairsConverter alternativeToNameValuePairsConverter; @@ -77,7 +74,7 @@ public AbstractTasksResource( final AbstractConvertFilesResource abstractConvertFilesResource, final AbstractOptimizeFilesResource abstractOptimizeFilesResource, final AbstractCaptureWebsitesResource abstractCaptureWebsitesResource, final AbstractMergeFilesResource abstractMergeFilesResource, final AbstractCreateArchivesResource abstractCreateArchivesResource, final AbstractExecuteCommandsResource abstractExecuteCommandsResource, - final AbstractCreateThumbnailsResource abstractCreateThumbnailsResource + final AbstractCreateThumbnailsResource abstractCreateThumbnailsResource, final AbstractGetMetadataResource abstractGetMetadataResourceResource ) { super(settingsProvider, objectMapperProvider); @@ -88,6 +85,7 @@ public AbstractTasksResource( this.abstractCreateArchivesResource = abstractCreateArchivesResource; this.abstractExecuteCommandsResource = abstractExecuteCommandsResource; this.abstractCreateThumbnailsResource = abstractCreateThumbnailsResource; + this.abstractGetMetadataResource = abstractGetMetadataResourceResource; this.includesToNameValuePairsConverter = new IncludesToNameValuePairsConverter(); this.filtersToNameValuePairsConverter = new FiltersToNameValuePairsConverter(); @@ -498,7 +496,7 @@ public abstract TRAR command( ) throws IOException, URISyntaxException; /** - * Create a task to convert one input file from input_format to output_format. Requires the task.write scope. + * Create a task to create a thumbnail of one file. Requires the task.write scope. * * @param createThumbnailsTaskRequest {@link CreateThumbnailsTaskRequest} * @return {@link TRAR} @@ -510,6 +508,19 @@ public abstract TRAR thumbnail( ) throws IOException, URISyntaxException; + /** + * Create a task to extract metadata from one file. Requires the task.write scope. + * + * @param getMetadataTaskRequest {@link CreateThumbnailsTaskRequest} + * @return {@link TRAR} + * @throws IOException + * @throws URISyntaxException + */ + public abstract TRAR metadata( + @NotNull final GetMetadataTaskRequest getMetadataTaskRequest + ) throws IOException, URISyntaxException; + + @Override public void close() throws IOException { abstractConvertFilesResource.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/AsyncTasksResource.java b/src/main/java/com/cloudconvert/resource/async/AsyncTasksResource.java index 1da9d7f..77985cc 100644 --- a/src/main/java/com/cloudconvert/resource/async/AsyncTasksResource.java +++ b/src/main/java/com/cloudconvert/resource/async/AsyncTasksResource.java @@ -34,10 +34,10 @@ public AsyncTasksResource( final AsyncConvertFilesResource asyncConvertFilesResource, final AsyncOptimizeFilesResource asyncOptimizeFilesResource, final AsyncCaptureWebsitesResource asyncCaptureWebsitesResource, final AsyncMergeFilesResource asyncMergeFilesResource, final AsyncCreateArchivesResource asyncCreateArchivesResource, final AsyncExecuteCommandsResource asyncExecuteCommandsResource, - final AsyncCreateThumbnailsResource asyncCreateThumbnailsResource + final AsyncCreateThumbnailsResource asyncCreateThumbnailsResource, final AsyncGetMetadataResource asyncGetMetadataResource ) { super(settingsProvider, objectMapperProvider, asyncConvertFilesResource, asyncOptimizeFilesResource, asyncCaptureWebsitesResource, - asyncMergeFilesResource, asyncCreateArchivesResource, asyncExecuteCommandsResource, asyncCreateThumbnailsResource); + asyncMergeFilesResource, asyncCreateArchivesResource, asyncExecuteCommandsResource, asyncCreateThumbnailsResource, asyncGetMetadataResource); this.asyncRequestExecutor = asyncRequestExecutor; } @@ -199,6 +199,12 @@ public AsyncResult thumbnail( return getAbstractCreateThumbnailsResource().thumbnail(createThumbnailsTaskRequest); } + @Override + public AsyncResult metadata( + @NotNull final GetMetadataTaskRequest getMetadataTaskRequest + ) throws IOException, URISyntaxException { + return getAbstractGetMetadataResource().metadata(getMetadataTaskRequest); + } @Override public void close() throws IOException { diff --git a/src/main/java/com/cloudconvert/resource/sync/GetMetadataResource.java b/src/main/java/com/cloudconvert/resource/sync/GetMetadataResource.java new file mode 100644 index 0000000..3bc9824 --- /dev/null +++ b/src/main/java/com/cloudconvert/resource/sync/GetMetadataResource.java @@ -0,0 +1,41 @@ +package com.cloudconvert.resource.sync; + +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.Result; +import com.cloudconvert.executor.RequestExecutor; +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 GetMetadataResource extends AbstractGetMetadataResource> { + + private final RequestExecutor requestExecutor; + + public GetMetadataResource( + final SettingsProvider settingsProvider, + final ObjectMapperProvider objectMapperProvider, final RequestExecutor requestExecutor + ) { + super(settingsProvider, objectMapperProvider); + + this.requestExecutor = requestExecutor; + } + + @Override + public Result metadata( + @NotNull final GetMetadataTaskRequest getMetadataTaskRequest + ) throws IOException, URISyntaxException { + return requestExecutor.execute(getMetadataHttpUriRequest(getMetadataTaskRequest), TASK_RESPONSE_TYPE_REFERENCE); + } + + @Override + public void close() throws IOException { + requestExecutor.close(); + } +} diff --git a/src/main/java/com/cloudconvert/resource/sync/TasksResource.java b/src/main/java/com/cloudconvert/resource/sync/TasksResource.java index 95fd620..dba301c 100644 --- a/src/main/java/com/cloudconvert/resource/sync/TasksResource.java +++ b/src/main/java/com/cloudconvert/resource/sync/TasksResource.java @@ -36,10 +36,10 @@ public TasksResource( final ConvertFilesResource convertFilesResource, final OptimizeFilesResource optimizeFilesResource, final CaptureWebsitesResource captureWebsitesResource, final MergeFilesResource mergeFilesResource, final CreateArchivesResource createArchivesResource, final ExecuteCommandsResource executeCommandsResource, - final CreateThumbnailsResource createThumbnailsResource + final CreateThumbnailsResource createThumbnailsResource, final GetMetadataResource getMetadataResource ) { super(settingsProvider, objectMapperProvider, convertFilesResource, optimizeFilesResource, captureWebsitesResource, - mergeFilesResource, createArchivesResource, executeCommandsResource, createThumbnailsResource); + mergeFilesResource, createArchivesResource, executeCommandsResource, createThumbnailsResource, getMetadataResource); this.requestExecutor = requestExecutor; } @@ -202,6 +202,12 @@ public Result thumbnail(@NotNull CreateThumbnailsTaskRequest creat return getAbstractCreateThumbnailsResource().thumbnail(createThumbnailsTaskRequest); } + @Override + public Result metadata(@NotNull GetMetadataTaskRequest getMetadataTaskRequest + ) throws IOException, URISyntaxException { + return getAbstractGetMetadataResource().metadata(getMetadataTaskRequest); + } + @Override public void close() throws IOException { requestExecutor.close(); diff --git a/src/test/java/com/cloudconvert/test/integration/AsyncTasksIntegrationTest.java b/src/test/java/com/cloudconvert/test/integration/AsyncTasksIntegrationTest.java index 457fbd9..a6297d5 100644 --- a/src/test/java/com/cloudconvert/test/integration/AsyncTasksIntegrationTest.java +++ b/src/test/java/com/cloudconvert/test/integration/AsyncTasksIntegrationTest.java @@ -294,6 +294,47 @@ public void createThumbnailTaskLifecycle() throws Exception { assertThat(deleteVoidResult.getStatus()).isEqualTo(HttpStatus.SC_NO_CONTENT); } + @Test(timeout = TIMEOUT) + public void getMetadataTaskLifecycle() throws Exception { + // Import upload (immediate upload) + final Result uploadImportTaskResponseResult = asyncCloudConvertClient.importUsing().upload(new UploadImportRequest(), jpgTest1InputStream).get(); + assertThat(uploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + + final TaskResponse uploadImportTaskResponse = uploadImportTaskResponseResult.getBody(); + assertThat(uploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); + + // Convert + final GetMetadataTaskRequest getMetadataTaskRequest = new GetMetadataTaskRequest().setInput(uploadImportTaskResponse.getId()).setInputFormat(JPG); + final Result getMetadataTaskResponseResult = asyncCloudConvertClient.tasks().metadata(getMetadataTaskRequest).get(); + assertThat(getMetadataTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + + final TaskResponse metadataTaskResponse = getMetadataTaskResponseResult.getBody(); + assertThat(metadataTaskResponse.getOperation()).isEqualTo(Operation.METADATA); + + // Wait + final Result waitGetMetadataResponseResult = asyncCloudConvertClient.tasks().wait(metadataTaskResponse.getId()).get(); + assertThat(waitGetMetadataResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + + final TaskResponse waitMetadataTaskResponse = waitGetMetadataResponseResult.getBody(); + assertThat(waitMetadataTaskResponse.getOperation()).isEqualTo(Operation.METADATA); + assertThat(waitMetadataTaskResponse.getStatus()).isEqualTo(Status.FINISHED); + assertThat(waitMetadataTaskResponse.getId()).isEqualTo(metadataTaskResponse.getId()); + + // Show + final Result showMetadataResponseResult = asyncCloudConvertClient.tasks().show(metadataTaskResponse.getId()).get(); + assertThat(showMetadataResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + + final TaskResponse showMetadataTaskResponse = showMetadataResponseResult.getBody(); + assertThat(showMetadataTaskResponse.getOperation()).isEqualTo(Operation.METADATA); + assertThat(showMetadataTaskResponse.getStatus()).isEqualTo(Status.FINISHED); + assertThat(showMetadataTaskResponse.getId()).isEqualTo(metadataTaskResponse.getId()); + assertThat(showMetadataTaskResponse.getResult().getMetadata()).isNotEmpty(); + + // Delete + final Result deleteVoidResult = asyncCloudConvertClient.tasks().delete(metadataTaskResponse.getId()).get(); + assertThat(deleteVoidResult.getStatus()).isEqualTo(HttpStatus.SC_NO_CONTENT); + } + @Test(timeout = TIMEOUT) public void listTasksLifecycle() throws Exception { // List operations diff --git a/src/test/java/com/cloudconvert/test/integration/TasksIntegrationTest.java b/src/test/java/com/cloudconvert/test/integration/TasksIntegrationTest.java index 5fcd873..f107332 100644 --- a/src/test/java/com/cloudconvert/test/integration/TasksIntegrationTest.java +++ b/src/test/java/com/cloudconvert/test/integration/TasksIntegrationTest.java @@ -291,6 +291,49 @@ public void thumbnailFileTaskLifecycle() throws Exception { assertThat(deleteVoidResult.getStatus()).isEqualTo(HttpStatus.SC_NO_CONTENT); } + + @Test(timeout = TIMEOUT) + public void getMetadataTaskLifecycle() throws Exception { + // Import upload (immediate upload) + final Result uploadImportTaskResponseResult = cloudConvertClient.importUsing().upload(new UploadImportRequest(), jpgTest1InputStream); + assertThat(uploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + + final TaskResponse uploadImportTaskResponse = uploadImportTaskResponseResult.getBody(); + assertThat(uploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); + + // Thumbnail + final GetMetadataTaskRequest getMetadataTaskRequest = new GetMetadataTaskRequest().setInput(uploadImportTaskResponse.getId()).setInputFormat(JPG); + final Result metadataTaskResponseResult = cloudConvertClient.tasks().metadata(getMetadataTaskRequest); + assertThat(metadataTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + + final TaskResponse metadataTaskResponse = metadataTaskResponseResult.getBody(); + assertThat(metadataTaskResponse.getOperation()).isEqualTo(Operation.METADATA); + + // Wait + final Result waitMetadataTaskResponseResult = cloudConvertClient.tasks().wait(metadataTaskResponse.getId()); + assertThat(waitMetadataTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + + final TaskResponse waitMetadataTaskResponse = waitMetadataTaskResponseResult.getBody(); + assertThat(waitMetadataTaskResponse.getOperation()).isEqualTo(Operation.METADATA); + assertThat(waitMetadataTaskResponse.getStatus()).isEqualTo(Status.FINISHED); + assertThat(waitMetadataTaskResponse.getId()).isEqualTo(metadataTaskResponse.getId()); + + // Show + final Result showMetadataTaskResponseResult = cloudConvertClient.tasks().show(metadataTaskResponse.getId()); + assertThat(showMetadataTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + + final TaskResponse showMetadataTaskResponse = showMetadataTaskResponseResult.getBody(); + assertThat(showMetadataTaskResponse.getOperation()).isEqualTo(Operation.METADATA); + assertThat(showMetadataTaskResponse.getStatus()).isEqualTo(Status.FINISHED); + assertThat(showMetadataTaskResponse.getId()).isEqualTo(metadataTaskResponse.getId()); + assertThat(showMetadataTaskResponse.getResult().getMetadata()).isNotEmpty(); + + // Delete + final Result deleteVoidResult = cloudConvertClient.tasks().delete(metadataTaskResponse.getId()); + assertThat(deleteVoidResult.getStatus()).isEqualTo(HttpStatus.SC_NO_CONTENT); + } + + @Test(timeout = TIMEOUT) public void listTasksLifecycle() throws Exception { // List operations diff --git a/src/test/java/com/cloudconvert/test/unit/AsyncTasksUnitTest.java b/src/test/java/com/cloudconvert/test/unit/AsyncTasksUnitTest.java index 25f3fb4..f3b4f9c 100644 --- a/src/test/java/com/cloudconvert/test/unit/AsyncTasksUnitTest.java +++ b/src/test/java/com/cloudconvert/test/unit/AsyncTasksUnitTest.java @@ -518,6 +518,33 @@ public void tasks_thumbnail() throws Exception { assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); } + + @Test + public void tasks_metadata() throws Exception { + final GetMetadataTaskRequest expectedGetMetadataTaskRequest = new GetMetadataTaskRequest().setInput("execute-commands-task-input"); + final AsyncResult taskResponseAsyncResult = FutureAsyncResult.builder().build(); + when(asyncRequestExecutor.execute(any(HttpUriRequest.class), eq(AbstractResource.TASK_RESPONSE_TYPE_REFERENCE))).thenReturn(taskResponseAsyncResult); + + assertThat(asyncCloudConvertClient.tasks().metadata(expectedGetMetadataTaskRequest)).isEqualTo(taskResponseAsyncResult); + verify(asyncRequestExecutor, times(1)).execute(httpUriRequestArgumentCaptor.capture(), eq(AbstractResource.TASK_RESPONSE_TYPE_REFERENCE)); + + final HttpUriRequest httpUriRequest = httpUriRequestArgumentCaptor.getValue(); + + assertThat(httpUriRequest).isNotNull(); + assertThat(httpUriRequest.getMethod()).isEqualTo(HttpPost.METHOD_NAME); + assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_URL + "/" + AbstractResource.V2 + "/metadata"); + assertThat(httpUriRequest).isInstanceOfSatisfying(HttpEntityEnclosingRequestBase.class, httpEntityEnclosingRequestBase -> { + final ExecuteCommandsTaskRequest actualExecuteCommandsTaskRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() + .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), ExecuteCommandsTaskRequest.class)).get(); + + assertThat(actualExecuteCommandsTaskRequest.getInput()).isEqualTo(expectedGetMetadataTaskRequest.getInput()); + }); + assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> + assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); + assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_USER_AGENT)).hasSize(1).allSatisfy(header -> + assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); + } + @After public void after() throws Exception { asyncCloudConvertClient.close(); diff --git a/src/test/java/com/cloudconvert/test/unit/TasksUnitTest.java b/src/test/java/com/cloudconvert/test/unit/TasksUnitTest.java index bb24d33..12091be 100644 --- a/src/test/java/com/cloudconvert/test/unit/TasksUnitTest.java +++ b/src/test/java/com/cloudconvert/test/unit/TasksUnitTest.java @@ -517,6 +517,33 @@ public void tasks_thumbnail() throws Exception { assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); } + @Test + public void tasks_metadata() throws Exception { + final GetMetadataTaskRequest expectedGetMetadataTaskRequest = new GetMetadataTaskRequest().setInput("execute-commands-task-input"); + final Result taskResponseResult = Result.builder().build(); + when(requestExecutor.execute(any(HttpUriRequest.class), eq(AbstractResource.TASK_RESPONSE_TYPE_REFERENCE))).thenReturn(taskResponseResult); + + assertThat(cloudConvertClient.tasks().metadata(expectedGetMetadataTaskRequest)).isEqualTo(taskResponseResult); + verify(requestExecutor, times(1)).execute(httpUriRequestArgumentCaptor.capture(), eq(AbstractResource.TASK_RESPONSE_TYPE_REFERENCE)); + + final HttpUriRequest httpUriRequest = httpUriRequestArgumentCaptor.getValue(); + + assertThat(httpUriRequest).isNotNull(); + assertThat(httpUriRequest.getMethod()).isEqualTo(HttpPost.METHOD_NAME); + assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_URL + "/" + AbstractResource.V2 + "/metadata"); + assertThat(httpUriRequest).isInstanceOfSatisfying(HttpEntityEnclosingRequestBase.class, httpEntityEnclosingRequestBase -> { + final ExecuteCommandsTaskRequest actualExecuteCommandsTaskRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() + .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), ExecuteCommandsTaskRequest.class)).get(); + + assertThat(actualExecuteCommandsTaskRequest.getInput()).isEqualTo(expectedGetMetadataTaskRequest.getInput()); + }); + assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> + assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); + assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_USER_AGENT)).hasSize(1).allSatisfy(header -> + assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); + } + + @After public void after() throws Exception { cloudConvertClient.close(); From f933b810958c40ae4db33ea7c548c6a6b78d4546 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Oct 2020 20:56:18 +0000 Subject: [PATCH 09/51] Bump junit from 4.13 to 4.13.1 Bumps [junit](https://github.com/junit-team/junit4) from 4.13 to 4.13.1. - [Release notes](https://github.com/junit-team/junit4/releases) - [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.13.1.md) - [Commits](https://github.com/junit-team/junit4/compare/r4.13...r4.13.1) Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6b5a687..42b3ba6 100644 --- a/pom.xml +++ b/pom.xml @@ -68,7 +68,7 @@ 1.18.12 - 4.13 + 4.13.1 3.3.3 3.15.0 1.5.0 From 726a32551ef6301c293deaad9ddf13cc667c1ce2 Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Sun, 8 Nov 2020 14:02:54 +0100 Subject: [PATCH 10/51] Fix: use correct file parameter when uploading --- .../com/cloudconvert/resource/AbstractImportFilesResource.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/cloudconvert/resource/AbstractImportFilesResource.java b/src/main/java/com/cloudconvert/resource/AbstractImportFilesResource.java index d23c5b2..b03aae2 100644 --- a/src/main/java/com/cloudconvert/resource/AbstractImportFilesResource.java +++ b/src/main/java/com/cloudconvert/resource/AbstractImportFilesResource.java @@ -320,6 +320,6 @@ protected HttpEntity getMultipartHttpEntity( 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()); } } From 8c261686f1457cf6a7fda8391528915aa247c6e5 Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Sun, 8 Nov 2020 14:03:18 +0100 Subject: [PATCH 11/51] Fix: do not send Authorization header when uploading --- .../resource/async/AsyncImportFilesResource.java | 7 +++++-- .../cloudconvert/resource/sync/ImportFilesResource.java | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/cloudconvert/resource/async/AsyncImportFilesResource.java b/src/main/java/com/cloudconvert/resource/async/AsyncImportFilesResource.java index ae02d48..edf2d86 100644 --- a/src/main/java/com/cloudconvert/resource/async/AsyncImportFilesResource.java +++ b/src/main/java/com/cloudconvert/resource/async/AsyncImportFilesResource.java @@ -15,6 +15,7 @@ import com.cloudconvert.dto.result.Result; import com.cloudconvert.executor.AsyncRequestExecutor; import com.cloudconvert.resource.AbstractImportFilesResource; +import com.cloudconvert.resource.AbstractResource; import com.google.common.collect.ImmutableList; import lombok.extern.slf4j.Slf4j; import org.apache.http.HttpEntity; @@ -31,6 +32,8 @@ import java.net.URISyntaxException; import java.util.concurrent.ExecutionException; +import static com.cloudconvert.resource.AbstractResource.*; + @Slf4j public class AsyncImportFilesResource extends AbstractImportFilesResource> { @@ -101,7 +104,7 @@ public AsyncResult upload( 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); @@ -143,7 +146,7 @@ public AsyncResult upload( 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); diff --git a/src/main/java/com/cloudconvert/resource/sync/ImportFilesResource.java b/src/main/java/com/cloudconvert/resource/sync/ImportFilesResource.java index f8fcef6..543d5b2 100644 --- a/src/main/java/com/cloudconvert/resource/sync/ImportFilesResource.java +++ b/src/main/java/com/cloudconvert/resource/sync/ImportFilesResource.java @@ -91,7 +91,7 @@ public Result upload( 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, requestExecutor.execute(multipartHttpUriRequest, VOID_TYPE_REFERENCE)); } @@ -122,7 +122,7 @@ public Result upload( 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, requestExecutor.execute(multipartHttpUriRequest, VOID_TYPE_REFERENCE)); } From c487c45f7110707185b2b81aaa080ba9d26dc89e Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Sun, 8 Nov 2020 14:07:54 +0100 Subject: [PATCH 12/51] Fix: do not send Authorization header when uploading --- .../java/com/cloudconvert/test/unit/AsyncImportsUnitTest.java | 2 +- src/test/java/com/cloudconvert/test/unit/ImportsUnitTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/cloudconvert/test/unit/AsyncImportsUnitTest.java b/src/test/java/com/cloudconvert/test/unit/AsyncImportsUnitTest.java index 4299bf5..93927dd 100644 --- a/src/test/java/com/cloudconvert/test/unit/AsyncImportsUnitTest.java +++ b/src/test/java/com/cloudconvert/test/unit/AsyncImportsUnitTest.java @@ -153,7 +153,7 @@ public void import_upload_immediateUpload() throws Exception { assertThat(httpUriRequest.getMethod()).isEqualTo(HttpPost.METHOD_NAME); assertThat(httpUriRequest.getURI().toString()).isEqualTo(taskResponse.getResult().getForm().getUrl()); assertThat(httpUriRequest).isInstanceOf(HttpRequestBase.class); - assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> + assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(0).allSatisfy(header -> assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_USER_AGENT)).hasSize(1).allSatisfy(header -> assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); diff --git a/src/test/java/com/cloudconvert/test/unit/ImportsUnitTest.java b/src/test/java/com/cloudconvert/test/unit/ImportsUnitTest.java index b2f35e1..268176f 100644 --- a/src/test/java/com/cloudconvert/test/unit/ImportsUnitTest.java +++ b/src/test/java/com/cloudconvert/test/unit/ImportsUnitTest.java @@ -148,7 +148,7 @@ public void import_upload_immediateUpload() throws Exception { assertThat(httpUriRequest.getMethod()).isEqualTo(HttpPost.METHOD_NAME); assertThat(httpUriRequest.getURI().toString()).isEqualTo(taskResponse.getResult().getForm().getUrl()); assertThat(httpUriRequest).isInstanceOf(HttpRequestBase.class); - assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> + assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(0).allSatisfy(header -> assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_USER_AGENT)).hasSize(1).allSatisfy(header -> assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); From 236997631c910cc8f727903ef98ffe818994ee8a Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Sun, 8 Nov 2020 14:25:54 +0100 Subject: [PATCH 13/51] Bump version --- README.md | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 00551b2..b0660b3 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Add the following dependency to your pom.xml: com.cloudconvert cloudconvert-java - 1.0.3 + 1.0.4 ``` diff --git a/pom.xml b/pom.xml index 42b3ba6..b578e9e 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ com.cloudconvert cloudconvert-java - 1.0.3 + 1.0.4 cloudconvert-java CloudConvert is an online file converter API - more than 200 different audio, video, document, ebook, archive, image, spreadsheet and presentation formats supported. From b00d963b57ee361532b197d74d395424c31f1352 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 18 Feb 2021 21:29:06 +0000 Subject: [PATCH 14/51] Bump jackson-databind from 2.10.3 to 2.10.5.1 Bumps [jackson-databind](https://github.com/FasterXML/jackson) from 2.10.3 to 2.10.5.1. - [Release notes](https://github.com/FasterXML/jackson/releases) - [Commits](https://github.com/FasterXML/jackson/commits) Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b578e9e..4a107b5 100644 --- a/pom.xml +++ b/pom.xml @@ -60,7 +60,7 @@ 4.5.12 1.24 - 2.10.3 + 2.10.5.1 1.7.30 19.0.0 From 60c9060e865d7e36403456b636c21ba0f567b5b4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 31 Mar 2021 22:00:07 +0000 Subject: [PATCH 15/51] Bump guava from 28.2-jre to 29.0-jre Bumps [guava](https://github.com/google/guava) from 28.2-jre to 29.0-jre. - [Release notes](https://github.com/google/guava/releases) - [Commits](https://github.com/google/guava/commits) Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4a107b5..73be070 100644 --- a/pom.xml +++ b/pom.xml @@ -64,7 +64,7 @@ 1.7.30 19.0.0 - 28.2-jre + 29.0-jre 1.18.12 From 7b879eebe09faa1c5e997bf1eafebe12c437795e Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Fri, 2 Apr 2021 13:36:30 +0200 Subject: [PATCH 16/51] Add write metadata support --- .../client/AsyncCloudConvertClient.java | 3 +- .../client/CloudConvertClient.java | 3 +- .../java/com/cloudconvert/dto/Operation.java | 1 + .../dto/request/WriteMetadataTaskRequest.java | 57 +++++++++++++++++++ .../resource/AbstractTasksResource.java | 24 +++++++- .../AbstractWriteMetadataResource.java | 49 ++++++++++++++++ .../resource/async/AsyncTasksResource.java | 12 +++- .../async/AsyncWriteMetadataResource.java | 41 +++++++++++++ .../resource/sync/TasksResource.java | 57 +++++++++++-------- .../resource/sync/WriteMetadataResource.java | 41 +++++++++++++ .../AsyncTasksIntegrationTest.java | 49 +++++++++++++++- .../integration/TasksIntegrationTest.java | 51 ++++++++++++++++- .../test/unit/AsyncTasksUnitTest.java | 27 +++++++++ .../cloudconvert/test/unit/TasksUnitTest.java | 26 +++++++++ 14 files changed, 408 insertions(+), 33 deletions(-) create mode 100644 src/main/java/com/cloudconvert/dto/request/WriteMetadataTaskRequest.java create mode 100644 src/main/java/com/cloudconvert/resource/AbstractWriteMetadataResource.java create mode 100644 src/main/java/com/cloudconvert/resource/async/AsyncWriteMetadataResource.java create mode 100644 src/main/java/com/cloudconvert/resource/sync/WriteMetadataResource.java diff --git a/src/main/java/com/cloudconvert/client/AsyncCloudConvertClient.java b/src/main/java/com/cloudconvert/client/AsyncCloudConvertClient.java index 6c22cf4..c6d45df 100644 --- a/src/main/java/com/cloudconvert/client/AsyncCloudConvertClient.java +++ b/src/main/java/com/cloudconvert/client/AsyncCloudConvertClient.java @@ -51,7 +51,8 @@ public AsyncCloudConvertClient( new AsyncCreateArchivesResource(settingsProvider, objectMapperProvider, asyncRequestExecutor), new AsyncExecuteCommandsResource(settingsProvider, objectMapperProvider, asyncRequestExecutor), new AsyncCreateThumbnailsResource(settingsProvider, objectMapperProvider, asyncRequestExecutor), - new AsyncGetMetadataResource(settingsProvider, objectMapperProvider, asyncRequestExecutor) + new AsyncGetMetadataResource(settingsProvider, objectMapperProvider, asyncRequestExecutor), + new AsyncWriteMetadataResource(settingsProvider, objectMapperProvider, asyncRequestExecutor) ), new AsyncJobsResource(settingsProvider, objectMapperProvider, asyncRequestExecutor) ); diff --git a/src/main/java/com/cloudconvert/client/CloudConvertClient.java b/src/main/java/com/cloudconvert/client/CloudConvertClient.java index 4c329d4..aa8390c 100644 --- a/src/main/java/com/cloudconvert/client/CloudConvertClient.java +++ b/src/main/java/com/cloudconvert/client/CloudConvertClient.java @@ -52,7 +52,8 @@ public CloudConvertClient( new CreateArchivesResource(settingsProvider, objectMapperProvider, requestExecutor), new ExecuteCommandsResource(settingsProvider, objectMapperProvider, requestExecutor), new CreateThumbnailsResource(settingsProvider, objectMapperProvider, requestExecutor), - new GetMetadataResource(settingsProvider, objectMapperProvider, requestExecutor) + new GetMetadataResource(settingsProvider, objectMapperProvider, requestExecutor), + new WriteMetadataResource(settingsProvider, objectMapperProvider, requestExecutor) ), new JobsResource(settingsProvider, objectMapperProvider, requestExecutor) ); diff --git a/src/main/java/com/cloudconvert/dto/Operation.java b/src/main/java/com/cloudconvert/dto/Operation.java index 09178f3..1c79c4b 100644 --- a/src/main/java/com/cloudconvert/dto/Operation.java +++ b/src/main/java/com/cloudconvert/dto/Operation.java @@ -14,6 +14,7 @@ public enum Operation { COMMAND("command"), THUMBNAIL("thumbnail"), METADATA("metadata"), + METADATA_WRITE("metadata/write"), IMPORT_URL("import/url"), IMPORT_UPLOAD("import/upload"), diff --git a/src/main/java/com/cloudconvert/dto/request/WriteMetadataTaskRequest.java b/src/main/java/com/cloudconvert/dto/request/WriteMetadataTaskRequest.java new file mode 100644 index 0000000..f678d02 --- /dev/null +++ b/src/main/java/com/cloudconvert/dto/request/WriteMetadataTaskRequest.java @@ -0,0 +1,57 @@ +package com.cloudconvert.dto.request; + +import com.cloudconvert.dto.Operation; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Getter +@Setter +@Accessors(chain = true) +@ToString +@EqualsAndHashCode(callSuper = true) +public class WriteMetadataTaskRequest extends TaskRequest { + + /** + * (required) The ID of the input task for the conversion, normally the import task. Multiple task IDs can be provided as an array. + */ + private List input; + + /** + * (optional) The current format of the file, e.g. pdf. If not set, the extension of the input file is used as input format. + */ + private String inputFormat; + + /** + * (optional) Use a specific engine for the conversion. + */ + private String engine; + + /** + * (required) Keys and values of metadata to write. Possible keys include Title, Author, Creator, Producer. + */ + private Map metadata; + + /** + * (optional) Use a specific engine version for the conversion. + */ + private String engineVersion; + + + public WriteMetadataTaskRequest setInput(final String... input) { + this.input = Arrays.stream(input).collect(Collectors.toList()); + return this; + } + + @Override + public Operation getOperation() { + return Operation.METADATA_WRITE; + } +} diff --git a/src/main/java/com/cloudconvert/resource/AbstractTasksResource.java b/src/main/java/com/cloudconvert/resource/AbstractTasksResource.java index 0f92071..b9b1e3b 100644 --- a/src/main/java/com/cloudconvert/resource/AbstractTasksResource.java +++ b/src/main/java/com/cloudconvert/resource/AbstractTasksResource.java @@ -64,6 +64,9 @@ public abstract class AbstractTasksResource abstractGetMetadataResource; + @Getter + private final AbstractWriteMetadataResource abstractWriteMetadataResource; + private final IncludesToNameValuePairsConverter includesToNameValuePairsConverter; private final FiltersToNameValuePairsConverter filtersToNameValuePairsConverter; private final AlternativeToNameValuePairsConverter alternativeToNameValuePairsConverter; @@ -74,7 +77,8 @@ public AbstractTasksResource( final AbstractConvertFilesResource abstractConvertFilesResource, final AbstractOptimizeFilesResource abstractOptimizeFilesResource, final AbstractCaptureWebsitesResource abstractCaptureWebsitesResource, final AbstractMergeFilesResource abstractMergeFilesResource, final AbstractCreateArchivesResource abstractCreateArchivesResource, final AbstractExecuteCommandsResource abstractExecuteCommandsResource, - final AbstractCreateThumbnailsResource abstractCreateThumbnailsResource, final AbstractGetMetadataResource abstractGetMetadataResourceResource + final AbstractCreateThumbnailsResource abstractCreateThumbnailsResource, final AbstractGetMetadataResource abstractGetMetadataResourceResource, + final AbstractWriteMetadataResource abstractWriteMetadataResourceResource ) { super(settingsProvider, objectMapperProvider); @@ -86,6 +90,7 @@ public AbstractTasksResource( this.abstractExecuteCommandsResource = abstractExecuteCommandsResource; this.abstractCreateThumbnailsResource = abstractCreateThumbnailsResource; this.abstractGetMetadataResource = abstractGetMetadataResourceResource; + this.abstractWriteMetadataResource = abstractWriteMetadataResourceResource; this.includesToNameValuePairsConverter = new IncludesToNameValuePairsConverter(); this.filtersToNameValuePairsConverter = new FiltersToNameValuePairsConverter(); @@ -511,7 +516,7 @@ public abstract TRAR thumbnail( /** * Create a task to extract metadata from one file. Requires the task.write scope. * - * @param getMetadataTaskRequest {@link CreateThumbnailsTaskRequest} + * @param getMetadataTaskRequest {@link GetMetadataTaskRequest} * @return {@link TRAR} * @throws IOException * @throws URISyntaxException @@ -521,6 +526,19 @@ public abstract TRAR metadata( ) throws IOException, URISyntaxException; + /** + * 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; + + @Override public void close() throws IOException { abstractConvertFilesResource.close(); @@ -530,5 +548,7 @@ public void close() throws IOException { abstractCreateArchivesResource.close(); abstractExecuteCommandsResource.close(); abstractCreateThumbnailsResource.close(); + abstractGetMetadataResource.close(); + abstractWriteMetadataResource.close(); } } 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..3dae944 --- /dev/null +++ b/src/main/java/com/cloudconvert/resource/AbstractWriteMetadataResource.java @@ -0,0 +1,49 @@ +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.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; + + 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/AsyncTasksResource.java b/src/main/java/com/cloudconvert/resource/async/AsyncTasksResource.java index 77985cc..aa6c919 100644 --- a/src/main/java/com/cloudconvert/resource/async/AsyncTasksResource.java +++ b/src/main/java/com/cloudconvert/resource/async/AsyncTasksResource.java @@ -34,10 +34,11 @@ public AsyncTasksResource( final AsyncConvertFilesResource asyncConvertFilesResource, final AsyncOptimizeFilesResource asyncOptimizeFilesResource, final AsyncCaptureWebsitesResource asyncCaptureWebsitesResource, final AsyncMergeFilesResource asyncMergeFilesResource, final AsyncCreateArchivesResource asyncCreateArchivesResource, final AsyncExecuteCommandsResource asyncExecuteCommandsResource, - final AsyncCreateThumbnailsResource asyncCreateThumbnailsResource, final AsyncGetMetadataResource asyncGetMetadataResource + final AsyncCreateThumbnailsResource asyncCreateThumbnailsResource, final AsyncGetMetadataResource asyncGetMetadataResource, + final AsyncWriteMetadataResource asyncWriteMetadataResource ) { super(settingsProvider, objectMapperProvider, asyncConvertFilesResource, asyncOptimizeFilesResource, asyncCaptureWebsitesResource, - asyncMergeFilesResource, asyncCreateArchivesResource, asyncExecuteCommandsResource, asyncCreateThumbnailsResource, asyncGetMetadataResource); + asyncMergeFilesResource, asyncCreateArchivesResource, asyncExecuteCommandsResource, asyncCreateThumbnailsResource, asyncGetMetadataResource, asyncWriteMetadataResource); this.asyncRequestExecutor = asyncRequestExecutor; } @@ -206,6 +207,13 @@ public AsyncResult metadata( return getAbstractGetMetadataResource().metadata(getMetadataTaskRequest); } + @Override + public AsyncResult writeMetadata( + @NotNull final WriteMetadataTaskRequest writeMetadataTaskRequest + ) throws IOException, URISyntaxException { + return getAbstractWriteMetadataResource().writeMetadata(writeMetadataTaskRequest); + } + @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/TasksResource.java b/src/main/java/com/cloudconvert/resource/sync/TasksResource.java index dba301c..131d35b 100644 --- a/src/main/java/com/cloudconvert/resource/sync/TasksResource.java +++ b/src/main/java/com/cloudconvert/resource/sync/TasksResource.java @@ -26,7 +26,7 @@ @Slf4j public class TasksResource extends AbstractTasksResource, - Result>, Result, Result>> { + Result>, Result, Result>> { private final RequestExecutor requestExecutor; @@ -36,28 +36,29 @@ public TasksResource( final ConvertFilesResource convertFilesResource, final OptimizeFilesResource optimizeFilesResource, final CaptureWebsitesResource captureWebsitesResource, final MergeFilesResource mergeFilesResource, final CreateArchivesResource createArchivesResource, final ExecuteCommandsResource executeCommandsResource, - final CreateThumbnailsResource createThumbnailsResource, final GetMetadataResource getMetadataResource - ) { + final CreateThumbnailsResource createThumbnailsResource, final GetMetadataResource getMetadataResource, + final WriteMetadataResource writeMetadataResource + ) { super(settingsProvider, objectMapperProvider, convertFilesResource, optimizeFilesResource, captureWebsitesResource, - mergeFilesResource, createArchivesResource, executeCommandsResource, createThumbnailsResource, getMetadataResource); + mergeFilesResource, createArchivesResource, executeCommandsResource, createThumbnailsResource, getMetadataResource, writeMetadataResource); this.requestExecutor = requestExecutor; } public Result show( - @NotNull final String taskId + @NotNull final String taskId ) throws IOException, URISyntaxException { return show(taskId, ImmutableList.of()); } public Result show( - @NotNull final String taskId, @NotNull final List includes + @NotNull final String taskId, @NotNull final List includes ) throws IOException, URISyntaxException { return requestExecutor.execute(getShowHttpUriRequest(taskId, includes), TASK_RESPONSE_TYPE_REFERENCE); } public Result wait( - @NotNull final String taskId + @NotNull final String taskId ) throws IOException, URISyntaxException { final URI uri = getUri(ImmutableList.of(PATH_SEGMENT_TASKS, taskId, PATH_SEGMENT_WAIT)); @@ -69,39 +70,39 @@ public Result> list() throws IOException, URISyntaxExcept } public Result> list( - @NotNull final Map filters + @NotNull final Map filters ) throws IOException, URISyntaxException { return list(filters, ImmutableList.of()); } @Override public Result> list( - @NotNull final Map filters, @NotNull final List includes + @NotNull final Map filters, @NotNull final List includes ) throws IOException, URISyntaxException { return list(filters, includes, null); } @Override public Result> list( - @NotNull final Map filters, @NotNull final List includes, @Nullable final Pagination pagination + @NotNull final Map filters, @NotNull final List includes, @Nullable final Pagination pagination ) throws IOException, URISyntaxException { return requestExecutor.execute(getListHttpUriRequest(filters, includes, pagination), TASK_RESPONSE_PAGEABLE_TYPE_REFERENCE); } public Result cancel( - @NotNull final String taskId + @NotNull final String taskId ) throws IOException, URISyntaxException { return requestExecutor.execute(getCancelHttpUriRequest(taskId), TASK_RESPONSE_TYPE_REFERENCE); } public Result retry( - @NotNull final String taskId + @NotNull final String taskId ) throws IOException, URISyntaxException { return requestExecutor.execute(getRetryHttpUriRequest(taskId), TASK_RESPONSE_TYPE_REFERENCE); } public Result delete( - @NotNull final String taskId + @NotNull final String taskId ) throws IOException, URISyntaxException { return requestExecutor.execute(getDeleteHttpUriRequest(taskId), VOID_TYPE_REFERENCE); } @@ -111,26 +112,26 @@ public Result> operations() throws IOException, URIS } public Result> operations( - @NotNull final Map filters + @NotNull final Map filters ) throws IOException, URISyntaxException { return operations(filters, ImmutableList.of()); } public Result> operations( - @NotNull final Map filters, @NotNull final List includes + @NotNull final Map filters, @NotNull final List includes ) throws IOException, URISyntaxException { return operations(filters, includes, null); } public Result> operations( - @NotNull final Map filters, @NotNull final List includes, @Nullable final Boolean alternative + @NotNull final Map filters, @NotNull final List includes, @Nullable final Boolean alternative ) throws IOException, URISyntaxException { return requestExecutor.execute(getOperationsHttpUriRequest(filters, includes, alternative), OPERATION_RESPONSE_PAGEABLE_TYPE_REFERENCE); } @Override public Result convert( - @NotNull final ConvertFilesTaskRequest convertFilesTaskRequest + @NotNull final ConvertFilesTaskRequest convertFilesTaskRequest ) throws IOException, URISyntaxException { return getAbstractConvertFilesResource().convert(convertFilesTaskRequest); } @@ -142,56 +143,56 @@ public Result> convertFormats() throws IOException, @Override public Result> convertFormats( - @NotNull final Map filters + @NotNull final Map filters ) throws IOException, URISyntaxException { return getAbstractConvertFilesResource().convertFormats(filters); } @Override public Result> convertFormats( - @NotNull final Map filters, @NotNull final List includes + @NotNull final Map filters, @NotNull final List includes ) throws IOException, URISyntaxException { return getAbstractConvertFilesResource().convertFormats(filters, includes); } @Override public Result> convertFormats( - @NotNull final Map filters, @NotNull final List includes, @Nullable final Boolean alternative + @NotNull final Map filters, @NotNull final List includes, @Nullable final Boolean alternative ) throws IOException, URISyntaxException { return getAbstractConvertFilesResource().convertFormats(filters, includes, alternative); } @Override public Result optimize( - @NotNull final OptimizeFilesTaskRequest optimizeFilesTaskRequest + @NotNull final OptimizeFilesTaskRequest optimizeFilesTaskRequest ) throws IOException, URISyntaxException { return getAbstractOptimizeFilesResource().optimize(optimizeFilesTaskRequest); } @Override public Result capture( - @NotNull final CaptureWebsitesTaskRequest captureWebsitesTaskRequest + @NotNull final CaptureWebsitesTaskRequest captureWebsitesTaskRequest ) throws IOException, URISyntaxException { return getAbstractCaptureWebsitesResource().capture(captureWebsitesTaskRequest); } @Override public Result merge( - @NotNull final MergeFilesTaskRequest mergeFilesTaskRequest + @NotNull final MergeFilesTaskRequest mergeFilesTaskRequest ) throws IOException, URISyntaxException { return getAbstractMergeFilesResource().merge(mergeFilesTaskRequest); } @Override public Result archive( - @NotNull final CreateArchivesTaskRequest createArchivesTaskRequest + @NotNull final CreateArchivesTaskRequest createArchivesTaskRequest ) throws IOException, URISyntaxException { return getAbstractCreateArchivesResource().archive(createArchivesTaskRequest); } @Override public Result command( - @NotNull final ExecuteCommandsTaskRequest executeCommandsTaskRequest + @NotNull final ExecuteCommandsTaskRequest executeCommandsTaskRequest ) throws IOException, URISyntaxException { return getAbstractExecuteCommandsResource().command(executeCommandsTaskRequest); } @@ -208,6 +209,12 @@ public Result metadata(@NotNull GetMetadataTaskRequest getMetadata return getAbstractGetMetadataResource().metadata(getMetadataTaskRequest); } + @Override + public Result writeMetadata(@NotNull WriteMetadataTaskRequest writeMetadataTaskRequest + ) throws IOException, URISyntaxException { + return getAbstractWriteMetadataResource().writeMetadata(writeMetadataTaskRequest); + } + @Override public void close() throws IOException { requestExecutor.close(); diff --git a/src/main/java/com/cloudconvert/resource/sync/WriteMetadataResource.java b/src/main/java/com/cloudconvert/resource/sync/WriteMetadataResource.java new file mode 100644 index 0000000..c5efcd3 --- /dev/null +++ b/src/main/java/com/cloudconvert/resource/sync/WriteMetadataResource.java @@ -0,0 +1,41 @@ +package com.cloudconvert.resource.sync; + +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.Result; +import com.cloudconvert.executor.RequestExecutor; +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 WriteMetadataResource extends AbstractWriteMetadataResource> { + + private final RequestExecutor requestExecutor; + + public WriteMetadataResource( + final SettingsProvider settingsProvider, + final ObjectMapperProvider objectMapperProvider, final RequestExecutor requestExecutor + ) { + super(settingsProvider, objectMapperProvider); + + this.requestExecutor = requestExecutor; + } + + @Override + public Result writeMetadata( + @NotNull final WriteMetadataTaskRequest getMetadataTaskRequest + ) throws IOException, URISyntaxException { + return requestExecutor.execute(getWriteMetadataHttpUriRequest(getMetadataTaskRequest), TASK_RESPONSE_TYPE_REFERENCE); + } + + @Override + public void close() throws IOException { + requestExecutor.close(); + } +} diff --git a/src/test/java/com/cloudconvert/test/integration/AsyncTasksIntegrationTest.java b/src/test/java/com/cloudconvert/test/integration/AsyncTasksIntegrationTest.java index a6297d5..6453514 100644 --- a/src/test/java/com/cloudconvert/test/integration/AsyncTasksIntegrationTest.java +++ b/src/test/java/com/cloudconvert/test/integration/AsyncTasksIntegrationTest.java @@ -22,6 +22,7 @@ import org.junit.runners.JUnit4; import java.io.InputStream; +import java.util.HashMap; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; @@ -303,7 +304,7 @@ public void getMetadataTaskLifecycle() throws Exception { final TaskResponse uploadImportTaskResponse = uploadImportTaskResponseResult.getBody(); assertThat(uploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); - // Convert + // Get Metadata final GetMetadataTaskRequest getMetadataTaskRequest = new GetMetadataTaskRequest().setInput(uploadImportTaskResponse.getId()).setInputFormat(JPG); final Result getMetadataTaskResponseResult = asyncCloudConvertClient.tasks().metadata(getMetadataTaskRequest).get(); assertThat(getMetadataTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); @@ -335,6 +336,52 @@ public void getMetadataTaskLifecycle() throws Exception { assertThat(deleteVoidResult.getStatus()).isEqualTo(HttpStatus.SC_NO_CONTENT); } + @Test(timeout = TIMEOUT) + public void writeMetadataTaskLifecycle() throws Exception { + // Import upload (immediate upload) + final Result uploadImportTaskResponseResult = asyncCloudConvertClient.importUsing().upload(new UploadImportRequest(), jpgTest1InputStream).get(); + assertThat(uploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + + final TaskResponse uploadImportTaskResponse = uploadImportTaskResponseResult.getBody(); + assertThat(uploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); + + // Write Metadata + final WriteMetadataTaskRequest writeMetadataTaskRequest = new WriteMetadataTaskRequest() + .setInput(uploadImportTaskResponse.getId()) + .setInputFormat(JPG) + .setMetadata(new HashMap() {{ + put("Author", "CloudConvert"); + }}); + final Result writeMetadataTaskResponseResult = asyncCloudConvertClient.tasks().writeMetadata(writeMetadataTaskRequest).get(); + assertThat(writeMetadataTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + + final TaskResponse writeMetadataTaskResponse = writeMetadataTaskResponseResult.getBody(); + assertThat(writeMetadataTaskResponse.getOperation()).isEqualTo(Operation.METADATA_WRITE); + + // Wait + final Result waitWriteMetadataResponseResult = asyncCloudConvertClient.tasks().wait(writeMetadataTaskResponse.getId()).get(); + assertThat(waitWriteMetadataResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + + final TaskResponse waitWriteMetadataTaskResponse = waitWriteMetadataResponseResult.getBody(); + assertThat(waitWriteMetadataTaskResponse.getOperation()).isEqualTo(Operation.METADATA_WRITE); + assertThat(waitWriteMetadataTaskResponse.getStatus()).isEqualTo(Status.FINISHED); + assertThat(waitWriteMetadataTaskResponse.getId()).isEqualTo(writeMetadataTaskResponse.getId()); + + // Show + final Result showWriteMetadataResponseResult = asyncCloudConvertClient.tasks().show(writeMetadataTaskResponse.getId()).get(); + assertThat(showWriteMetadataResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + + final TaskResponse showWriteMetadataTaskResponse = showWriteMetadataResponseResult.getBody(); + assertThat(showWriteMetadataTaskResponse.getOperation()).isEqualTo(Operation.METADATA_WRITE); + assertThat(showWriteMetadataTaskResponse.getStatus()).isEqualTo(Status.FINISHED); + assertThat(showWriteMetadataTaskResponse.getId()).isEqualTo(writeMetadataTaskResponse.getId()); + + // Delete + final Result deleteVoidResult = asyncCloudConvertClient.tasks().delete(writeMetadataTaskResponse.getId()).get(); + assertThat(deleteVoidResult.getStatus()).isEqualTo(HttpStatus.SC_NO_CONTENT); + } + + @Test(timeout = TIMEOUT) public void listTasksLifecycle() throws Exception { // List operations diff --git a/src/test/java/com/cloudconvert/test/integration/TasksIntegrationTest.java b/src/test/java/com/cloudconvert/test/integration/TasksIntegrationTest.java index f107332..7928e9c 100644 --- a/src/test/java/com/cloudconvert/test/integration/TasksIntegrationTest.java +++ b/src/test/java/com/cloudconvert/test/integration/TasksIntegrationTest.java @@ -22,7 +22,9 @@ import org.junit.runners.JUnit4; import java.io.InputStream; +import java.util.HashMap; import java.util.List; +import java.util.Map; import static org.assertj.core.api.Assertions.assertThat; @@ -301,7 +303,7 @@ public void getMetadataTaskLifecycle() throws Exception { final TaskResponse uploadImportTaskResponse = uploadImportTaskResponseResult.getBody(); assertThat(uploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); - // Thumbnail + // Metadata final GetMetadataTaskRequest getMetadataTaskRequest = new GetMetadataTaskRequest().setInput(uploadImportTaskResponse.getId()).setInputFormat(JPG); final Result metadataTaskResponseResult = cloudConvertClient.tasks().metadata(getMetadataTaskRequest); assertThat(metadataTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); @@ -334,6 +336,53 @@ public void getMetadataTaskLifecycle() throws Exception { } + @Test(timeout = TIMEOUT) + public void writeMetadataTaskLifecycle() throws Exception { + // Import upload (immediate upload) + final Result uploadImportTaskResponseResult = cloudConvertClient.importUsing().upload(new UploadImportRequest(), jpgTest1InputStream); + assertThat(uploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + + final TaskResponse uploadImportTaskResponse = uploadImportTaskResponseResult.getBody(); + assertThat(uploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); + + // Write Metadata + final WriteMetadataTaskRequest writeMetadataTaskRequest = new WriteMetadataTaskRequest() + .setInput(uploadImportTaskResponse.getId()) + .setInputFormat(JPG) + .setMetadata(new HashMap() {{ + put("Author", "CloudConvert"); + }}); + final Result writeMetadataTaskResponseResult = cloudConvertClient.tasks().writeMetadata(writeMetadataTaskRequest); + assertThat(writeMetadataTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + + final TaskResponse writeMetadataTaskResponse = writeMetadataTaskResponseResult.getBody(); + assertThat(writeMetadataTaskResponse.getOperation()).isEqualTo(Operation.METADATA_WRITE); + + // Wait + final Result waitWriteMetadataTaskResponseResult = cloudConvertClient.tasks().wait(writeMetadataTaskResponse.getId()); + assertThat(waitWriteMetadataTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + + final TaskResponse waitWriteMetadataTaskResponse = waitWriteMetadataTaskResponseResult.getBody(); + assertThat(waitWriteMetadataTaskResponse.getOperation()).isEqualTo(Operation.METADATA_WRITE); + assertThat(waitWriteMetadataTaskResponse.getStatus()).isEqualTo(Status.FINISHED); + assertThat(waitWriteMetadataTaskResponse.getId()).isEqualTo(writeMetadataTaskResponse.getId()); + + // Show + final Result showWriteMetadataTaskResponseResult = cloudConvertClient.tasks().show(writeMetadataTaskResponse.getId()); + assertThat(showWriteMetadataTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + + final TaskResponse showWriteMetadataTaskResponse = showWriteMetadataTaskResponseResult.getBody(); + assertThat(showWriteMetadataTaskResponse.getOperation()).isEqualTo(Operation.METADATA_WRITE); + assertThat(showWriteMetadataTaskResponse.getStatus()).isEqualTo(Status.FINISHED); + assertThat(showWriteMetadataTaskResponse.getId()).isEqualTo(writeMetadataTaskResponse.getId()); + + // Delete + final Result deleteVoidResult = cloudConvertClient.tasks().delete(writeMetadataTaskResponse.getId()); + assertThat(deleteVoidResult.getStatus()).isEqualTo(HttpStatus.SC_NO_CONTENT); + } + + + @Test(timeout = TIMEOUT) public void listTasksLifecycle() throws Exception { // List operations diff --git a/src/test/java/com/cloudconvert/test/unit/AsyncTasksUnitTest.java b/src/test/java/com/cloudconvert/test/unit/AsyncTasksUnitTest.java index f3b4f9c..81ba66f 100644 --- a/src/test/java/com/cloudconvert/test/unit/AsyncTasksUnitTest.java +++ b/src/test/java/com/cloudconvert/test/unit/AsyncTasksUnitTest.java @@ -545,6 +545,33 @@ public void tasks_metadata() throws Exception { assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); } + @Test + public void tasks_metadata_write() throws Exception { + final WriteMetadataTaskRequest expectedWriteMetadataTaskRequest = new WriteMetadataTaskRequest().setInput("execute-commands-task-input"); + final AsyncResult taskResponseAsyncResult = FutureAsyncResult.builder().build(); + when(asyncRequestExecutor.execute(any(HttpUriRequest.class), eq(AbstractResource.TASK_RESPONSE_TYPE_REFERENCE))).thenReturn(taskResponseAsyncResult); + + assertThat(asyncCloudConvertClient.tasks().writeMetadata(expectedWriteMetadataTaskRequest)).isEqualTo(taskResponseAsyncResult); + verify(asyncRequestExecutor, times(1)).execute(httpUriRequestArgumentCaptor.capture(), eq(AbstractResource.TASK_RESPONSE_TYPE_REFERENCE)); + + final HttpUriRequest httpUriRequest = httpUriRequestArgumentCaptor.getValue(); + + assertThat(httpUriRequest).isNotNull(); + assertThat(httpUriRequest.getMethod()).isEqualTo(HttpPost.METHOD_NAME); + assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_URL + "/" + AbstractResource.V2 + "/metadata/write"); + assertThat(httpUriRequest).isInstanceOfSatisfying(HttpEntityEnclosingRequestBase.class, httpEntityEnclosingRequestBase -> { + final ExecuteCommandsTaskRequest actualExecuteCommandsTaskRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() + .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), ExecuteCommandsTaskRequest.class)).get(); + + assertThat(actualExecuteCommandsTaskRequest.getInput()).isEqualTo(expectedWriteMetadataTaskRequest.getInput()); + }); + assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> + assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); + assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_USER_AGENT)).hasSize(1).allSatisfy(header -> + assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); + } + + @After public void after() throws Exception { asyncCloudConvertClient.close(); diff --git a/src/test/java/com/cloudconvert/test/unit/TasksUnitTest.java b/src/test/java/com/cloudconvert/test/unit/TasksUnitTest.java index 12091be..19d171e 100644 --- a/src/test/java/com/cloudconvert/test/unit/TasksUnitTest.java +++ b/src/test/java/com/cloudconvert/test/unit/TasksUnitTest.java @@ -543,6 +543,32 @@ public void tasks_metadata() throws Exception { assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); } + @Test + public void tasks_write_metadata() throws Exception { + final WriteMetadataTaskRequest expectedWriteMetadataTaskRequest = new WriteMetadataTaskRequest().setInput("execute-commands-task-input"); + final Result taskResponseResult = Result.builder().build(); + when(requestExecutor.execute(any(HttpUriRequest.class), eq(AbstractResource.TASK_RESPONSE_TYPE_REFERENCE))).thenReturn(taskResponseResult); + + assertThat(cloudConvertClient.tasks().writeMetadata(expectedWriteMetadataTaskRequest)).isEqualTo(taskResponseResult); + verify(requestExecutor, times(1)).execute(httpUriRequestArgumentCaptor.capture(), eq(AbstractResource.TASK_RESPONSE_TYPE_REFERENCE)); + + final HttpUriRequest httpUriRequest = httpUriRequestArgumentCaptor.getValue(); + + assertThat(httpUriRequest).isNotNull(); + assertThat(httpUriRequest.getMethod()).isEqualTo(HttpPost.METHOD_NAME); + assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_URL + "/" + AbstractResource.V2 + "/metadata/write"); + assertThat(httpUriRequest).isInstanceOfSatisfying(HttpEntityEnclosingRequestBase.class, httpEntityEnclosingRequestBase -> { + final ExecuteCommandsTaskRequest actualExecuteCommandsTaskRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() + .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), ExecuteCommandsTaskRequest.class)).get(); + + assertThat(actualExecuteCommandsTaskRequest.getInput()).isEqualTo(expectedWriteMetadataTaskRequest.getInput()); + }); + assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> + assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); + assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_USER_AGENT)).hasSize(1).allSatisfy(header -> + assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); + } + @After public void after() throws Exception { From 6a01b3aa81a7968dd0b27ffeb4e5f9c4ce0ccf08 Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Fri, 2 Apr 2021 13:46:44 +0200 Subject: [PATCH 17/51] Bump version --- README.md | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b0660b3..5b1680b 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Add the following dependency to your pom.xml: com.cloudconvert cloudconvert-java - 1.0.4 + 1.0.5 ``` diff --git a/pom.xml b/pom.xml index 73be070..d66d6fb 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ com.cloudconvert cloudconvert-java - 1.0.4 + 1.0.5 cloudconvert-java CloudConvert is an online file converter API - more than 200 different audio, video, document, ebook, archive, image, spreadsheet and presentation formats supported. From 33654cf43b6794e6081145f8bf672b85c3eea8f8 Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Wed, 7 Apr 2021 11:38:12 +0200 Subject: [PATCH 18/51] Allow overriding upload filename --- .../resource/AbstractImportFilesResource.java | 102 +++++++++++++----- .../async/AsyncImportFilesResource.java | 78 ++++++++++---- .../resource/sync/ImportFilesResource.java | 63 +++++++---- 3 files changed, 178 insertions(+), 65 deletions(-) diff --git a/src/main/java/com/cloudconvert/resource/AbstractImportFilesResource.java b/src/main/java/com/cloudconvert/resource/AbstractImportFilesResource.java index b03aae2..05f7d82 100644 --- a/src/main/java/com/cloudconvert/resource/AbstractImportFilesResource.java +++ b/src/main/java/com/cloudconvert/resource/AbstractImportFilesResource.java @@ -49,7 +49,7 @@ public abstract class AbstractImportFilesResource + * 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; + + /** + * 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 + * @return TRD + * @throws IOException + * @throws URISyntaxException + */ + public abstract TRAR upload( + @NotNull final TRAR taskResponseResult, @NotNull final InputStream inputStream ) throws IOException, URISyntaxException; /** @@ -165,12 +198,30 @@ public abstract TRAR upload( * * @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 TRAR taskResponseResult, @NotNull final InputStream inputStream, @NotNull final String filename + ) throws IOException, URISyntaxException; + + /** + * 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 + * @return + * @throws IOException + * @throws URISyntaxException + */ + public abstract TRAR upload( + @NotNull final String taskId, @NotNull final TaskResponse.Result.Form taskResponseResultForm, @NotNull final InputStream inputStream ) throws IOException, URISyntaxException; /** @@ -182,12 +233,13 @@ public abstract TRAR upload( * @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 taskId, @NotNull final TaskResponse.Result.Form taskResponseResultForm, @NotNull final InputStream inputStream, @NotNull final String filename ) throws IOException, URISyntaxException; /** @@ -199,11 +251,11 @@ public abstract TRAR upload( * @throws URISyntaxException */ public abstract TRAR s3( - @NotNull final S3ImportRequest s3ImportRequest + @NotNull final S3ImportRequest s3ImportRequest ) throws IOException, URISyntaxException; 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 +272,11 @@ protected HttpUriRequest getS3HttpUriRequest( * @throws URISyntaxException */ public abstract TRAR azureBlob( - @NotNull final AzureBlobImportRequest azureBlobImportRequest + @NotNull final AzureBlobImportRequest azureBlobImportRequest ) throws IOException, URISyntaxException; 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 +293,11 @@ protected HttpUriRequest getAzureBlobHttpUriRequest( * @throws URISyntaxException */ public abstract TRAR googleCloudStorage( - @NotNull final GoogleCloudStorageImportRequest googleCloudStorageImportRequest + @NotNull final GoogleCloudStorageImportRequest googleCloudStorageImportRequest ) throws IOException, URISyntaxException; 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 +314,11 @@ protected HttpUriRequest getGoogleCloudHttpUriRequest( * @throws URISyntaxException */ public abstract TRAR openStack( - @NotNull final OpenStackImportRequest openStackImportRequest + @NotNull final OpenStackImportRequest openStackImportRequest ) throws IOException, URISyntaxException; 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 +335,11 @@ protected HttpUriRequest getOpenStackHttpUriRequest( * @throws URISyntaxException */ public abstract TRAR sftp( - @NotNull final SftpImportRequest sftpImportRequest + @NotNull final SftpImportRequest sftpImportRequest ) throws IOException, URISyntaxException; 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); @@ -296,14 +348,14 @@ protected HttpUriRequest getSftpHttpUriRequest( } 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 +366,12 @@ 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("file", 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/async/AsyncImportFilesResource.java b/src/main/java/com/cloudconvert/resource/async/AsyncImportFilesResource.java index edf2d86..d9ce99a 100644 --- a/src/main/java/com/cloudconvert/resource/async/AsyncImportFilesResource.java +++ b/src/main/java/com/cloudconvert/resource/async/AsyncImportFilesResource.java @@ -41,9 +41,9 @@ public class AsyncImportFilesResource extends AbstractImportFilesResource url( - @NotNull final UrlImportRequest urlImportRequest + @NotNull final UrlImportRequest urlImportRequest ) throws IOException, URISyntaxException { return asyncRequestExecutor.execute(getUrlHttpUriRequest(urlImportRequest), TASK_RESPONSE_TYPE_REFERENCE); } @Override public AsyncResult upload( - @NotNull final UploadImportRequest uploadImportRequest + @NotNull final UploadImportRequest uploadImportRequest ) throws IOException, URISyntaxException { final URI uri = getUri(ImmutableList.of(PATH_SEGMENT_IMPORT, PATH_SEGMENT_UPLOAD)); final HttpEntity httpEntity = getHttpEntity(uploadImportRequest); @@ -71,14 +71,14 @@ public AsyncResult upload( @Override public AsyncResult upload( - @NotNull final UploadImportRequest uploadImportRequest, @NotNull final File file + @NotNull final UploadImportRequest uploadImportRequest, @NotNull final File file ) throws IOException, URISyntaxException { return upload(upload(uploadImportRequest), file); } @Override public AsyncResult upload( - @NotNull final AsyncResult TaskResponseAsyncResult, @NotNull final File file + @NotNull final AsyncResult TaskResponseAsyncResult, @NotNull final File file ) throws IOException, URISyntaxException { try { final Result TaskResponseResult = TaskResponseAsyncResult.get(); @@ -89,7 +89,7 @@ public AsyncResult upload( return upload(taskResponse.getId(), taskResponse.getResult().getForm(), file); } else { return CompletedAsyncResult.builder().result(Result.builder() - .status(TaskResponseResult.getStatus()).message(TaskResponseResult.getMessage()).build()).build(); + .status(TaskResponseResult.getStatus()).message(TaskResponseResult.getMessage()).build()).build(); } } catch (InterruptedException | ExecutionException e) { throw new IOException(e); @@ -98,7 +98,7 @@ public AsyncResult upload( @Override public AsyncResult upload( - @NotNull final String taskId, @NotNull final TaskResponse.Result.Form taskResponseResultForm, @NotNull final File file + @NotNull final String taskId, @NotNull final TaskResponse.Result.Form taskResponseResultForm, @NotNull final File file ) throws IOException, URISyntaxException { try { final URI multipartUri = new URI(taskResponseResultForm.getUrl()); @@ -113,14 +113,19 @@ public AsyncResult upload( @Override public AsyncResult upload( - @NotNull final UploadImportRequest uploadImportRequest, @NotNull final InputStream inputStream + @NotNull final UploadImportRequest uploadImportRequest, @NotNull final InputStream inputStream ) throws IOException, URISyntaxException { return upload(upload(uploadImportRequest), inputStream); } + @Override + public AsyncResult upload(@NotNull UploadImportRequest uploadImportRequest, @NotNull InputStream inputStream, @NotNull String filename) throws IOException, URISyntaxException { + return upload(upload(uploadImportRequest), inputStream, filename); + } + @Override public AsyncResult upload( - @NotNull final AsyncResult TaskResponseAsyncResult, @NotNull final InputStream inputStream + @NotNull final AsyncResult TaskResponseAsyncResult, @NotNull final InputStream inputStream ) throws IOException, URISyntaxException { try { final Result TaskResponseResult = TaskResponseAsyncResult.get(); @@ -131,7 +136,25 @@ public AsyncResult upload( return upload(taskResponse.getId(), taskResponse.getResult().getForm(), inputStream); } else { return CompletedAsyncResult.builder().result(Result.builder() - .status(TaskResponseResult.getStatus()).message(TaskResponseResult.getMessage()).build()).build(); + .status(TaskResponseResult.getStatus()).message(TaskResponseResult.getMessage()).build()).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 { + try { + final Result TaskResponseResult = TaskResponseAsyncResult.get(); + + if (HttpStatus.SC_CREATED == TaskResponseResult.getStatus()) { + final TaskResponse taskResponse = TaskResponseResult.getBody(); + + return upload(taskResponse.getId(), taskResponse.getResult().getForm(), inputStream, filename); + } else { + return CompletedAsyncResult.builder().result(Result.builder() + .status(TaskResponseResult.getStatus()).message(TaskResponseResult.getMessage()).build()).build(); } } catch (InterruptedException | ExecutionException e) { throw new IOException(e); @@ -140,7 +163,7 @@ public AsyncResult upload( @Override public AsyncResult upload( - @NotNull final String taskId, @NotNull final TaskResponse.Result.Form taskResponseResultForm, @NotNull final InputStream inputStream + @NotNull final String taskId, @NotNull final TaskResponse.Result.Form taskResponseResultForm, @NotNull final InputStream inputStream ) throws IOException, URISyntaxException { try { final URI multipartUri = new URI(taskResponseResultForm.getUrl()); @@ -153,8 +176,21 @@ public AsyncResult upload( } } + @Override + public AsyncResult upload(@NotNull String taskId, TaskResponse.Result.@NotNull Form taskResponseResultForm, @NotNull InputStream inputStream, @NotNull String filename) throws IOException, URISyntaxException { + 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); + } + } + private AsyncResult uploadPostProcess( - final String taskId, final AsyncResult multipartVoidAsyncResult + final String taskId, final AsyncResult multipartVoidAsyncResult ) throws IOException, URISyntaxException, InterruptedException, ExecutionException { final Result multipartVoidResult = multipartVoidAsyncResult.get(); @@ -171,45 +207,45 @@ private AsyncResult uploadPostProcess( return asyncTasksResource.show(taskId); } else { return CompletedAsyncResult.builder().result(Result.builder() - .status(redirectVoidResult.getStatus()).message(redirectVoidResult.getMessage()).build()).build(); + .status(redirectVoidResult.getStatus()).message(redirectVoidResult.getMessage()).build()).build(); } } else { return CompletedAsyncResult.builder().result(Result.builder() - .status(multipartVoidResult.getStatus()).message(multipartVoidResult.getMessage()).build()).build(); + .status(multipartVoidResult.getStatus()).message(multipartVoidResult.getMessage()).build()).build(); } } @Override public AsyncResult s3( - @NotNull final S3ImportRequest s3ImportRequest + @NotNull final S3ImportRequest s3ImportRequest ) throws IOException, URISyntaxException { return asyncRequestExecutor.execute(getS3HttpUriRequest(s3ImportRequest), TASK_RESPONSE_TYPE_REFERENCE); } @Override public AsyncResult azureBlob( - @NotNull final AzureBlobImportRequest azureBlobImportRequest + @NotNull final AzureBlobImportRequest azureBlobImportRequest ) throws IOException, URISyntaxException { return asyncRequestExecutor.execute(getAzureBlobHttpUriRequest(azureBlobImportRequest), TASK_RESPONSE_TYPE_REFERENCE); } @Override public AsyncResult googleCloudStorage( - @NotNull final GoogleCloudStorageImportRequest googleCloudStorageImportRequest + @NotNull final GoogleCloudStorageImportRequest googleCloudStorageImportRequest ) throws IOException, URISyntaxException { return asyncRequestExecutor.execute(getGoogleCloudHttpUriRequest(googleCloudStorageImportRequest), TASK_RESPONSE_TYPE_REFERENCE); } @Override public AsyncResult openStack( - @NotNull final OpenStackImportRequest openStackImportRequest + @NotNull final OpenStackImportRequest openStackImportRequest ) throws IOException, URISyntaxException { return asyncRequestExecutor.execute(getOpenStackHttpUriRequest(openStackImportRequest), TASK_RESPONSE_TYPE_REFERENCE); } @Override public AsyncResult sftp( - @NotNull final SftpImportRequest sftpImportRequest + @NotNull final SftpImportRequest sftpImportRequest ) throws IOException, URISyntaxException { return asyncRequestExecutor.execute(getSftpHttpUriRequest(sftpImportRequest), TASK_RESPONSE_TYPE_REFERENCE); } diff --git a/src/main/java/com/cloudconvert/resource/sync/ImportFilesResource.java b/src/main/java/com/cloudconvert/resource/sync/ImportFilesResource.java index 543d5b2..eaf0fef 100644 --- a/src/main/java/com/cloudconvert/resource/sync/ImportFilesResource.java +++ b/src/main/java/com/cloudconvert/resource/sync/ImportFilesResource.java @@ -35,9 +35,9 @@ public class ImportFilesResource extends AbstractImportFilesResource url( - @NotNull final UrlImportRequest urlImportRequest + @NotNull final UrlImportRequest urlImportRequest ) throws IOException, URISyntaxException { return requestExecutor.execute(getUrlHttpUriRequest(urlImportRequest), TASK_RESPONSE_TYPE_REFERENCE); } @Override public Result upload( - @NotNull final UploadImportRequest uploadImportRequest + @NotNull final UploadImportRequest uploadImportRequest ) throws IOException, URISyntaxException { final URI uri = getUri(ImmutableList.of(PATH_SEGMENT_IMPORT, PATH_SEGMENT_UPLOAD)); final HttpEntity httpEntity = getHttpEntity(uploadImportRequest); @@ -65,14 +65,14 @@ public Result upload( @Override public Result upload( - @NotNull final UploadImportRequest uploadImportRequest, @NotNull final File file + @NotNull final UploadImportRequest uploadImportRequest, @NotNull final File file ) throws IOException, URISyntaxException { return upload(upload(uploadImportRequest), file); } @Override public Result upload( - @NotNull final Result TaskResponseResult, @NotNull final File file + @NotNull final Result TaskResponseResult, @NotNull final File file ) throws IOException, URISyntaxException { if (HttpStatus.SC_CREATED == TaskResponseResult.getStatus()) { final TaskResponse taskResponse = TaskResponseResult.getBody(); @@ -85,7 +85,7 @@ public Result upload( @Override public Result upload( - @NotNull final String taskId, @NotNull final TaskResponse.Result.Form taskResponseResultForm, @NotNull final File file + @NotNull final String taskId, @NotNull final TaskResponse.Result.Form taskResponseResultForm, @NotNull final File file ) throws IOException, URISyntaxException { final URI multipartUri = new URI(taskResponseResultForm.getUrl()); @@ -96,16 +96,19 @@ public Result upload( } @Override - public Result upload( - @NotNull final UploadImportRequest uploadImportRequest, @NotNull final InputStream inputStream - ) throws IOException, URISyntaxException { + public Result upload(@NotNull UploadImportRequest uploadImportRequest, @NotNull InputStream inputStream) throws IOException, URISyntaxException { return upload(upload(uploadImportRequest), inputStream); } @Override public Result upload( - @NotNull final Result TaskResponseResult, @NotNull final InputStream inputStream + @NotNull final UploadImportRequest uploadImportRequest, @NotNull final InputStream inputStream, @NotNull final String filename ) throws IOException, URISyntaxException { + return upload(upload(uploadImportRequest), inputStream, filename); + } + + @Override + public Result upload(@NotNull Result TaskResponseResult, @NotNull InputStream inputStream) throws IOException, URISyntaxException { if (HttpStatus.SC_CREATED == TaskResponseResult.getStatus()) { final TaskResponse taskResponse = TaskResponseResult.getBody(); @@ -117,8 +120,19 @@ public Result upload( @Override public Result upload( - @NotNull final String taskId, @NotNull final TaskResponse.Result.Form taskResponseResultForm, @NotNull final InputStream inputStream + @NotNull final Result TaskResponseResult, @NotNull final InputStream inputStream, @NotNull final String filename ) throws IOException, URISyntaxException { + if (HttpStatus.SC_CREATED == TaskResponseResult.getStatus()) { + final TaskResponse taskResponse = TaskResponseResult.getBody(); + + return upload(taskResponse.getId(), taskResponse.getResult().getForm(), inputStream, filename); + } else { + return Result.builder().status(TaskResponseResult.getStatus()).message(TaskResponseResult.getMessage()).build(); + } + } + + @Override + public Result upload(@NotNull String taskId, TaskResponse.Result.@NotNull Form taskResponseResultForm, @NotNull InputStream inputStream) throws IOException, URISyntaxException { final URI multipartUri = new URI(taskResponseResultForm.getUrl()); final HttpEntity multipartHttpEntity = getMultipartHttpEntity(taskResponseResultForm, inputStream); final HttpUriRequest multipartHttpUriRequest = getHttpUriRequest(HttpPost.class, multipartUri, multipartHttpEntity); @@ -126,8 +140,19 @@ public Result upload( return uploadPostProcess(taskId, requestExecutor.execute(multipartHttpUriRequest, VOID_TYPE_REFERENCE)); } + @Override + public Result upload( + @NotNull final String taskId, @NotNull final TaskResponse.Result.Form taskResponseResultForm, @NotNull final InputStream inputStream, @NotNull final String filename + ) throws IOException, URISyntaxException { + 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, requestExecutor.execute(multipartHttpUriRequest, VOID_TYPE_REFERENCE)); + } + private Result uploadPostProcess( - final String taskId, final Result multipartVoidResult + final String taskId, final Result multipartVoidResult ) throws IOException, URISyntaxException { if (HttpStatus.SC_CREATED == multipartVoidResult.getStatus()) { return tasksResource.show(taskId); @@ -149,35 +174,35 @@ private Result uploadPostProcess( @Override public Result s3( - @NotNull final S3ImportRequest s3ImportRequest + @NotNull final S3ImportRequest s3ImportRequest ) throws IOException, URISyntaxException { return requestExecutor.execute(getS3HttpUriRequest(s3ImportRequest), TASK_RESPONSE_TYPE_REFERENCE); } @Override public Result azureBlob( - @NotNull final AzureBlobImportRequest azureBlobImportRequest + @NotNull final AzureBlobImportRequest azureBlobImportRequest ) throws IOException, URISyntaxException { return requestExecutor.execute(getAzureBlobHttpUriRequest(azureBlobImportRequest), TASK_RESPONSE_TYPE_REFERENCE); } @Override public Result googleCloudStorage( - @NotNull final GoogleCloudStorageImportRequest googleCloudStorageImportRequest + @NotNull final GoogleCloudStorageImportRequest googleCloudStorageImportRequest ) throws IOException, URISyntaxException { return requestExecutor.execute(getGoogleCloudHttpUriRequest(googleCloudStorageImportRequest), TASK_RESPONSE_TYPE_REFERENCE); } @Override public Result openStack( - @NotNull final OpenStackImportRequest openStackImportRequest + @NotNull final OpenStackImportRequest openStackImportRequest ) throws IOException, URISyntaxException { return requestExecutor.execute(getOpenStackHttpUriRequest(openStackImportRequest), TASK_RESPONSE_TYPE_REFERENCE); } @Override public Result sftp( - @NotNull final SftpImportRequest sftpImportRequest + @NotNull final SftpImportRequest sftpImportRequest ) throws IOException, URISyntaxException { return requestExecutor.execute(getSftpHttpUriRequest(sftpImportRequest), TASK_RESPONSE_TYPE_REFERENCE); } From 40c0600e31d546cf740624fb0b0339d718388a33 Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Thu, 8 Apr 2021 12:15:36 +0200 Subject: [PATCH 19/51] Bump version --- README.md | 6 +++--- pom.xml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 5b1680b..785f79a 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Add the following dependency to your pom.xml: com.cloudconvert cloudconvert-java - 1.0.5 + 1.0.6 ``` @@ -168,7 +168,7 @@ final CloudConvertClient cloudConvertClient = new CloudConvertClient(); final InputStream inputStream = getClass().getClassLoader().getResourceAsStream("file.jpg"); // Upload file using import/upload task -final TaskResponse uploadImportTaskResponse = cloudConvertClient.importUsing().upload(new UploadImportRequest(), inputStream).getBody(); +final TaskResponse uploadImportTaskResponse = cloudConvertClient.importUsing().upload(new UploadImportRequest(), inputStream, "file.jpg").getBody(); // Wait for import/upload task to be finished final TaskResponse waitUploadImportTaskResponse = cloudConvertClient.tasks().wait(uploadImportTaskResponse.getId()).getBody(); @@ -183,7 +183,7 @@ final AsyncCloudConvertClient asyncCloudConvertClient = new CloudConvertClient() final InputStream inputStream = getClass().getClassLoader().getResourceAsStream("file.jpg"); // Upload file using import/upload task -final TaskResponse uploadImportTaskResponse = asyncCloudConvertClient.importUsing().upload(new UploadImportRequest(), inputStream).get().getBody(); +final TaskResponse uploadImportTaskResponse = asyncCloudConvertClient.importUsing().upload(new UploadImportRequest(), inputStream, "file.jpg").get().getBody(); // Wait for import/upload task to be finished final TaskResponse waitUploadImportTaskResponse = asyncCloudConvertClient.tasks().wait(uploadImportTaskResponse.getId()).get().getBody(); diff --git a/pom.xml b/pom.xml index d66d6fb..66a119a 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ com.cloudconvert cloudconvert-java - 1.0.5 + 1.0.6 cloudconvert-java CloudConvert is an online file converter API - more than 200 different audio, video, document, ebook, archive, image, spreadsheet and presentation formats supported. From c7f10b5aa6c8f4f7f369bf5edc91f895c79b52f6 Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Mon, 19 Apr 2021 17:30:26 +0200 Subject: [PATCH 20/51] Setup GitHub Actions --- .github/workflows/run-tests.yml | 36 +++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 .github/workflows/run-tests.yml diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml new file mode 100644 index 0000000..ed480a0 --- /dev/null +++ b/.github/workflows/run-tests.yml @@ -0,0 +1,36 @@ +# This workflow will build a Java project with Maven +# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven + +name: Tests + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + jdk: ["11", "8"] + + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 11 + uses: actions/setup-java@v2 + with: + java-version: ${{ matrix.jdk }} + distribution: 'adopt' + - name: MVN Install + run: mvn install -DskipTests=true -Dmaven.javadoc.skip=true -Dgpg.skip -B -V + - name: Build + run: mvn clean compile -U + - name: Unit Tests + run: mvn test -Punit-tests + - name: Integration Tests + run: mvn test -Pintegration-tests From 6c7f9651ca17b3842a15696cfe6589d1e9b64819 Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Mon, 19 Apr 2021 17:35:59 +0200 Subject: [PATCH 21/51] Setup GitHub Actions --- .travis.yml | 8 -------- README.md | 3 ++- 2 files changed, 2 insertions(+), 9 deletions(-) delete mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index e5e25e0..0000000 --- a/.travis.yml +++ /dev/null @@ -1,8 +0,0 @@ -language: java - -jdk: - - openjdk8 - - openjdk11 - -install: mvn install -DskipTests=true -Dmaven.javadoc.skip=true -Dgpg.skip -B -V -script: mvn clean compile -U && mvn test -Punit-tests && mvn test -Pintegration-tests diff --git a/README.md b/README.md index 785f79a..de1fc48 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ ## cloudconvert-java -[![Build Status](https://travis-ci.org/cloudconvert/cloudconvert-java.svg?branch=master)](https://travis-ci.org/cloudconvert/cloudconvert-java) +[![Tests](https://github.com/cloudconvert/cloudconvert-java/actions/workflows/run-tests.yml/badge.svg)](https://github.com/cloudconvert/cloudconvert-java/actions/workflows/run-tests.yml) +![Maven Central](https://img.shields.io/maven-central/v/com.cloudconvert/cloudconvert-java) This is the official Java SDK v2 for the [CloudConvert](https://cloudconvert.com/api/v2) _API v2_. From 6cc7d12b8a36adcd28912573c73f951890c3ea60 Mon Sep 17 00:00:00 2001 From: iti-gupta2 Date: Tue, 18 May 2021 17:40:58 -0400 Subject: [PATCH 22/51] Base64/Raw Import Added the implementation of Base64 and Raw Import --- .../java/com/cloudconvert/dto/Operation.java | 2 + .../dto/request/Base64ImportRequest.java | 31 ++++++++++ .../dto/request/RawImportRequest.java | 31 ++++++++++ .../resource/AbstractImportFilesResource.java | 52 +++++++++++++--- .../async/AsyncImportFilesResource.java | 18 +++--- .../resource/sync/ImportFilesResource.java | 18 +++--- ...AsyncImportsAndExportsIntegrationTest.java | 30 ++++++---- .../ImportsAndExportsIntegrationTest.java | 31 ++++++---- .../test/unit/ImportsUnitTest.java | 60 ++++++++++++++++--- 9 files changed, 219 insertions(+), 54 deletions(-) create mode 100644 src/main/java/com/cloudconvert/dto/request/Base64ImportRequest.java create mode 100644 src/main/java/com/cloudconvert/dto/request/RawImportRequest.java diff --git a/src/main/java/com/cloudconvert/dto/Operation.java b/src/main/java/com/cloudconvert/dto/Operation.java index 1c79c4b..5ef41fe 100644 --- a/src/main/java/com/cloudconvert/dto/Operation.java +++ b/src/main/java/com/cloudconvert/dto/Operation.java @@ -23,6 +23,8 @@ public enum Operation { IMPORT_GOOGLE_CLOUD_STORAGE("import/google-cloud-storage"), IMPORT_OPENSTACK("import/openstack"), IMPORT_SFTP("import/sftp"), + IMPORT_BASE64("import/base64"), + IMPORT_RAW("import/raw"), EXPORT_URL("export/url"), EXPORT_S3("export/s3"), diff --git a/src/main/java/com/cloudconvert/dto/request/Base64ImportRequest.java b/src/main/java/com/cloudconvert/dto/request/Base64ImportRequest.java new file mode 100644 index 0000000..b3aab0b --- /dev/null +++ b/src/main/java/com/cloudconvert/dto/request/Base64ImportRequest.java @@ -0,0 +1,31 @@ +package com.cloudconvert.dto.request; + +import com.cloudconvert.dto.Operation; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +@Getter +@Setter +@Accessors(chain = true) +@ToString +@EqualsAndHashCode(callSuper = true) +public class Base64ImportRequest extends TaskRequest{ + + /*** + * (required) The raw file content. + */ + private String file; + + /*** + * (required) The filename of the input file, including extension. + */ + private String filename; + + @Override + public Operation getOperation() { + return Operation.IMPORT_BASE64; + } +} diff --git a/src/main/java/com/cloudconvert/dto/request/RawImportRequest.java b/src/main/java/com/cloudconvert/dto/request/RawImportRequest.java new file mode 100644 index 0000000..4cea8d6 --- /dev/null +++ b/src/main/java/com/cloudconvert/dto/request/RawImportRequest.java @@ -0,0 +1,31 @@ +package com.cloudconvert.dto.request; + +import com.cloudconvert.dto.Operation; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +@Getter +@Setter +@Accessors(chain = true) +@ToString +@EqualsAndHashCode(callSuper = true) +public class RawImportRequest extends TaskRequest{ + + /*** + * (required) The raw file content. + */ + private String file; + + /*** + * (required) The filename of the input file, including extension. + */ + private String filename; + + @Override + public Operation getOperation() { + return Operation.IMPORT_RAW; + } +} diff --git a/src/main/java/com/cloudconvert/resource/AbstractImportFilesResource.java b/src/main/java/com/cloudconvert/resource/AbstractImportFilesResource.java index 05f7d82..801375b 100644 --- a/src/main/java/com/cloudconvert/resource/AbstractImportFilesResource.java +++ b/src/main/java/com/cloudconvert/resource/AbstractImportFilesResource.java @@ -2,13 +2,7 @@ import com.cloudconvert.client.mapper.ObjectMapperProvider; import com.cloudconvert.client.setttings.SettingsProvider; -import com.cloudconvert.dto.request.AzureBlobImportRequest; -import com.cloudconvert.dto.request.GoogleCloudStorageImportRequest; -import com.cloudconvert.dto.request.OpenStackImportRequest; -import com.cloudconvert.dto.request.S3ImportRequest; -import com.cloudconvert.dto.request.SftpImportRequest; -import com.cloudconvert.dto.request.UploadImportRequest; -import com.cloudconvert.dto.request.UrlImportRequest; +import com.cloudconvert.dto.request.*; import com.cloudconvert.dto.response.TaskResponse; import com.cloudconvert.dto.result.AbstractResult; import com.google.common.collect.ImmutableList; @@ -45,6 +39,8 @@ public abstract class AbstractImportFilesResource 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/sync/ImportFilesResource.java b/src/main/java/com/cloudconvert/resource/sync/ImportFilesResource.java index eaf0fef..e515157 100644 --- a/src/main/java/com/cloudconvert/resource/sync/ImportFilesResource.java +++ b/src/main/java/com/cloudconvert/resource/sync/ImportFilesResource.java @@ -2,13 +2,7 @@ import com.cloudconvert.client.mapper.ObjectMapperProvider; import com.cloudconvert.client.setttings.SettingsProvider; -import com.cloudconvert.dto.request.AzureBlobImportRequest; -import com.cloudconvert.dto.request.GoogleCloudStorageImportRequest; -import com.cloudconvert.dto.request.OpenStackImportRequest; -import com.cloudconvert.dto.request.S3ImportRequest; -import com.cloudconvert.dto.request.SftpImportRequest; -import com.cloudconvert.dto.request.UploadImportRequest; -import com.cloudconvert.dto.request.UrlImportRequest; +import com.cloudconvert.dto.request.*; import com.cloudconvert.dto.response.TaskResponse; import com.cloudconvert.dto.result.Result; import com.cloudconvert.executor.RequestExecutor; @@ -207,6 +201,16 @@ public Result sftp( return requestExecutor.execute(getSftpHttpUriRequest(sftpImportRequest), TASK_RESPONSE_TYPE_REFERENCE); } + @Override + public Result base64(@NotNull Base64ImportRequest base64ImportRequest) throws IOException, URISyntaxException { + return requestExecutor.execute(getBase64HttpUriRequest(base64ImportRequest), TASK_RESPONSE_TYPE_REFERENCE); + } + + @Override + public Result raw(@NotNull RawImportRequest rawImportRequest) throws IOException, URISyntaxException { + return requestExecutor.execute(getRawHttpUriRequest(rawImportRequest), TASK_RESPONSE_TYPE_REFERENCE); + } + @Override public void close() throws IOException { requestExecutor.close(); diff --git a/src/test/java/com/cloudconvert/test/integration/AsyncImportsAndExportsIntegrationTest.java b/src/test/java/com/cloudconvert/test/integration/AsyncImportsAndExportsIntegrationTest.java index 514aa89..06da4dd 100644 --- a/src/test/java/com/cloudconvert/test/integration/AsyncImportsAndExportsIntegrationTest.java +++ b/src/test/java/com/cloudconvert/test/integration/AsyncImportsAndExportsIntegrationTest.java @@ -3,19 +3,7 @@ import com.cloudconvert.client.AsyncCloudConvertClient; import com.cloudconvert.dto.Operation; import com.cloudconvert.dto.Status; -import com.cloudconvert.dto.request.AzureBlobExportRequest; -import com.cloudconvert.dto.request.AzureBlobImportRequest; -import com.cloudconvert.dto.request.GoogleCloudStorageExportRequest; -import com.cloudconvert.dto.request.GoogleCloudStorageImportRequest; -import com.cloudconvert.dto.request.OpenStackExportRequest; -import com.cloudconvert.dto.request.OpenStackImportRequest; -import com.cloudconvert.dto.request.S3ExportRequest; -import com.cloudconvert.dto.request.S3ImportRequest; -import com.cloudconvert.dto.request.SftpExportRequest; -import com.cloudconvert.dto.request.SftpImportRequest; -import com.cloudconvert.dto.request.UploadImportRequest; -import com.cloudconvert.dto.request.UrlExportRequest; -import com.cloudconvert.dto.request.UrlImportRequest; +import com.cloudconvert.dto.request.*; import com.cloudconvert.dto.response.TaskResponse; import com.cloudconvert.dto.result.AsyncResult; import com.cloudconvert.dto.result.Result; @@ -257,6 +245,22 @@ public void importTasksCreation() throws Exception { final TaskResponse sftpImportTaskResponse = sftpImportTaskResponseResult.getBody(); assertThat(sftpImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_SFTP); + + // Import Base64 + final Base64ImportRequest base64ImportRequest = new Base64ImportRequest().setFile("dGVzdDEyMw==").setFilename("test.txt"); + final Result base64ImportTaskResponseResult = asyncCloudConvertClient.importUsing().base64(base64ImportRequest).get(); + assertThat(base64ImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + + final TaskResponse base64ImportTaskResponse = base64ImportTaskResponseResult.getBody(); + assertThat(base64ImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_BASE64); + + // Import Raw + final RawImportRequest rawImportRequest = new RawImportRequest().setFile("content").setFilename("test.txt"); + final Result rawImportTaskResponseResult = asyncCloudConvertClient.importUsing().raw(rawImportRequest).get(); + assertThat(rawImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + + final TaskResponse rawImportTaskResponse = rawImportTaskResponseResult.getBody(); + assertThat(rawImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_RAW); } /** diff --git a/src/test/java/com/cloudconvert/test/integration/ImportsAndExportsIntegrationTest.java b/src/test/java/com/cloudconvert/test/integration/ImportsAndExportsIntegrationTest.java index a5b5332..09058e2 100644 --- a/src/test/java/com/cloudconvert/test/integration/ImportsAndExportsIntegrationTest.java +++ b/src/test/java/com/cloudconvert/test/integration/ImportsAndExportsIntegrationTest.java @@ -3,19 +3,7 @@ import com.cloudconvert.client.CloudConvertClient; import com.cloudconvert.dto.Operation; import com.cloudconvert.dto.Status; -import com.cloudconvert.dto.request.AzureBlobExportRequest; -import com.cloudconvert.dto.request.AzureBlobImportRequest; -import com.cloudconvert.dto.request.GoogleCloudStorageExportRequest; -import com.cloudconvert.dto.request.GoogleCloudStorageImportRequest; -import com.cloudconvert.dto.request.OpenStackExportRequest; -import com.cloudconvert.dto.request.OpenStackImportRequest; -import com.cloudconvert.dto.request.S3ExportRequest; -import com.cloudconvert.dto.request.S3ImportRequest; -import com.cloudconvert.dto.request.SftpExportRequest; -import com.cloudconvert.dto.request.SftpImportRequest; -import com.cloudconvert.dto.request.UploadImportRequest; -import com.cloudconvert.dto.request.UrlExportRequest; -import com.cloudconvert.dto.request.UrlImportRequest; +import com.cloudconvert.dto.request.*; import com.cloudconvert.dto.response.TaskResponse; import com.cloudconvert.dto.result.Result; import com.cloudconvert.test.framework.AbstractTest; @@ -252,6 +240,23 @@ public void importTasksCreation() throws Exception { final TaskResponse sftpImportTaskResponse = sftpImportTaskResponseResult.getBody(); assertThat(sftpImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_SFTP); + + // Import Base64 + final Base64ImportRequest base64ImportRequest = new Base64ImportRequest().setFile("dGVzdDEyMw==").setFilename("test.txt"); + final Result base64ImportTaskResponseResult = cloudConvertClient.importUsing().base64(base64ImportRequest); + assertThat(base64ImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + + final TaskResponse base64ImportTaskResponse = base64ImportTaskResponseResult.getBody(); + assertThat(base64ImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_BASE64); + + // Import Raw + final RawImportRequest rawImportRequest = new RawImportRequest().setFile("content").setFilename("test.txt"); + final Result rawImportTaskResponseResult = cloudConvertClient.importUsing().raw(rawImportRequest); + assertThat(rawImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + + final TaskResponse rawImportTaskResponse = rawImportTaskResponseResult.getBody(); + assertThat(rawImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_RAW); + } /** diff --git a/src/test/java/com/cloudconvert/test/unit/ImportsUnitTest.java b/src/test/java/com/cloudconvert/test/unit/ImportsUnitTest.java index 268176f..4151b78 100644 --- a/src/test/java/com/cloudconvert/test/unit/ImportsUnitTest.java +++ b/src/test/java/com/cloudconvert/test/unit/ImportsUnitTest.java @@ -3,13 +3,7 @@ import com.cloudconvert.client.CloudConvertClient; import com.cloudconvert.client.mapper.ObjectMapperProvider; import com.cloudconvert.client.setttings.SettingsProvider; -import com.cloudconvert.dto.request.AzureBlobImportRequest; -import com.cloudconvert.dto.request.GoogleCloudStorageImportRequest; -import com.cloudconvert.dto.request.OpenStackImportRequest; -import com.cloudconvert.dto.request.S3ImportRequest; -import com.cloudconvert.dto.request.SftpImportRequest; -import com.cloudconvert.dto.request.UploadImportRequest; -import com.cloudconvert.dto.request.UrlImportRequest; +import com.cloudconvert.dto.request.*; import com.cloudconvert.dto.response.TaskResponse; import com.cloudconvert.dto.result.Result; import com.cloudconvert.executor.RequestExecutor; @@ -284,6 +278,58 @@ public void import_sftp() throws Exception { assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); } + @Test + public void import_base64() throws Exception{ + final Base64ImportRequest expectedBase64ImportRequest = new Base64ImportRequest().setFile("some-file").setFilename("test.txt"); + final Result taskResponseResult = Result.builder().build(); + + when(requestExecutor.execute(any(HttpUriRequest.class), eq(AbstractResource.TASK_RESPONSE_TYPE_REFERENCE))).thenReturn(taskResponseResult); + assertThat(cloudConvertClient.importUsing().base64(expectedBase64ImportRequest)).isEqualTo(taskResponseResult); + verify(requestExecutor, times(1)).execute(httpUriRequestArgumentCaptor.capture(), eq(AbstractResource.TASK_RESPONSE_TYPE_REFERENCE)); + + final HttpUriRequest httpUriRequest = httpUriRequestArgumentCaptor.getValue(); + + assertThat(httpUriRequest).isNotNull(); + assertThat(httpUriRequest.getMethod()).isEqualTo(HttpPost.METHOD_NAME); + assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_URL + "/" + AbstractResource.V2 + "/import/base64"); + assertThat(httpUriRequest).isInstanceOfSatisfying(HttpEntityEnclosingRequestBase.class, httpEntityEnclosingRequestBase -> { + final Base64ImportRequest actualBase64ImportRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() + .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), Base64ImportRequest.class)).get(); + + assertThat(actualBase64ImportRequest.getFilename()).isEqualTo(actualBase64ImportRequest.getFilename()); + }); + assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> + assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); + assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_USER_AGENT)).hasSize(1).allSatisfy(header -> + assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); + } + + @Test + public void import_raw() throws Exception{ + final RawImportRequest expectedRawImportRequest = new RawImportRequest().setFile("content").setFilename("test.txt"); + final Result taskResponseResult = Result.builder().build(); + + when(requestExecutor.execute(any(HttpUriRequest.class), eq(AbstractResource.TASK_RESPONSE_TYPE_REFERENCE))).thenReturn(taskResponseResult); + assertThat(cloudConvertClient.importUsing().raw(expectedRawImportRequest)).isEqualTo(taskResponseResult); + verify(requestExecutor, times(1)).execute(httpUriRequestArgumentCaptor.capture(), eq(AbstractResource.TASK_RESPONSE_TYPE_REFERENCE)); + + final HttpUriRequest httpUriRequest = httpUriRequestArgumentCaptor.getValue(); + + assertThat(httpUriRequest).isNotNull(); + assertThat(httpUriRequest.getMethod()).isEqualTo(HttpPost.METHOD_NAME); + assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_URL + "/" + AbstractResource.V2 + "/import/raw"); + assertThat(httpUriRequest).isInstanceOfSatisfying(HttpEntityEnclosingRequestBase.class, httpEntityEnclosingRequestBase -> { + final RawImportRequest actualRawImportRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() + .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), RawImportRequest.class)).get(); + + assertThat(actualRawImportRequest.getFilename()).isEqualTo(actualRawImportRequest.getFilename()); + }); + assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> + assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); + assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_USER_AGENT)).hasSize(1).allSatisfy(header -> + assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); + } + @After public void after() throws Exception { cloudConvertClient.close(); From 68b47c3dadd6a3a03da9d783fd87f4c80f51982f Mon Sep 17 00:00:00 2001 From: iti-gupta2 Date: Wed, 19 May 2021 09:53:41 -0400 Subject: [PATCH 23/51] Async Import Unit Test Added unit tests for Base64 and raw async import --- .../resource/AbstractImportFilesResource.java | 2 +- .../test/unit/AsyncImportsUnitTest.java | 59 ++++++++++++++++--- 2 files changed, 53 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/cloudconvert/resource/AbstractImportFilesResource.java b/src/main/java/com/cloudconvert/resource/AbstractImportFilesResource.java index 801375b..5abf604 100644 --- a/src/main/java/com/cloudconvert/resource/AbstractImportFilesResource.java +++ b/src/main/java/com/cloudconvert/resource/AbstractImportFilesResource.java @@ -365,7 +365,7 @@ protected HttpUriRequest getBase64HttpUriRequest( } /*** - * Create a task to import raw file + * Create a task to import raw file * * @param rawImportRequest * @return diff --git a/src/test/java/com/cloudconvert/test/unit/AsyncImportsUnitTest.java b/src/test/java/com/cloudconvert/test/unit/AsyncImportsUnitTest.java index 93927dd..3d57d4c 100644 --- a/src/test/java/com/cloudconvert/test/unit/AsyncImportsUnitTest.java +++ b/src/test/java/com/cloudconvert/test/unit/AsyncImportsUnitTest.java @@ -3,13 +3,7 @@ import com.cloudconvert.client.AsyncCloudConvertClient; import com.cloudconvert.client.mapper.ObjectMapperProvider; import com.cloudconvert.client.setttings.SettingsProvider; -import com.cloudconvert.dto.request.AzureBlobImportRequest; -import com.cloudconvert.dto.request.GoogleCloudStorageImportRequest; -import com.cloudconvert.dto.request.OpenStackImportRequest; -import com.cloudconvert.dto.request.S3ImportRequest; -import com.cloudconvert.dto.request.SftpImportRequest; -import com.cloudconvert.dto.request.UploadImportRequest; -import com.cloudconvert.dto.request.UrlImportRequest; +import com.cloudconvert.dto.request.*; import com.cloudconvert.dto.response.TaskResponse; import com.cloudconvert.dto.result.AsyncResult; import com.cloudconvert.dto.result.CompletedAsyncResult; @@ -288,6 +282,57 @@ public void import_sftp() throws Exception { assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_USER_AGENT)).hasSize(1).allSatisfy(header -> assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); } + @Test + public void import_base64() throws Exception{ + final Base64ImportRequest expectedBase64ImportRequest = new Base64ImportRequest().setFile("some-file").setFilename("test.txt"); + final AsyncResult taskResponseAsyncResult = FutureAsyncResult.builder().build(); + + when(asyncRequestExecutor.execute(any(HttpUriRequest.class), eq(AbstractResource.TASK_RESPONSE_TYPE_REFERENCE))).thenReturn(taskResponseAsyncResult); + assertThat(asyncCloudConvertClient.importUsing().base64(expectedBase64ImportRequest)).isEqualTo(taskResponseAsyncResult); + verify(asyncRequestExecutor, times(1)).execute(httpUriRequestArgumentCaptor.capture(), eq(AbstractResource.TASK_RESPONSE_TYPE_REFERENCE)); + + final HttpUriRequest httpUriRequest = httpUriRequestArgumentCaptor.getValue(); + + assertThat(httpUriRequest).isNotNull(); + assertThat(httpUriRequest.getMethod()).isEqualTo(HttpPost.METHOD_NAME); + assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_URL + "/" + AbstractResource.V2 + "/import/base64"); + assertThat(httpUriRequest).isInstanceOfSatisfying(HttpEntityEnclosingRequestBase.class, httpEntityEnclosingRequestBase -> { + final Base64ImportRequest actualBase64ImportRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() + .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), Base64ImportRequest.class)).get(); + + assertThat(actualBase64ImportRequest.getFilename()).isEqualTo(actualBase64ImportRequest.getFilename()); + }); + assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> + assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); + assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_USER_AGENT)).hasSize(1).allSatisfy(header -> + assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); + } + + @Test + public void import_raw() throws Exception{ + final RawImportRequest expectedRawImportRequest = new RawImportRequest().setFile("content").setFilename("test.txt"); + final AsyncResult taskResponseAsyncResult = FutureAsyncResult.builder().build(); + + when(asyncRequestExecutor.execute(any(HttpUriRequest.class), eq(AbstractResource.TASK_RESPONSE_TYPE_REFERENCE))).thenReturn(taskResponseAsyncResult); + assertThat(asyncCloudConvertClient.importUsing().raw(expectedRawImportRequest)).isEqualTo(taskResponseAsyncResult); + verify(asyncRequestExecutor, times(1)).execute(httpUriRequestArgumentCaptor.capture(), eq(AbstractResource.TASK_RESPONSE_TYPE_REFERENCE)); + + final HttpUriRequest httpUriRequest = httpUriRequestArgumentCaptor.getValue(); + + assertThat(httpUriRequest).isNotNull(); + assertThat(httpUriRequest.getMethod()).isEqualTo(HttpPost.METHOD_NAME); + assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_URL + "/" + AbstractResource.V2 + "/import/raw"); + assertThat(httpUriRequest).isInstanceOfSatisfying(HttpEntityEnclosingRequestBase.class, httpEntityEnclosingRequestBase -> { + final RawImportRequest actualRawImportRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() + .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), RawImportRequest.class)).get(); + + assertThat(actualRawImportRequest.getFilename()).isEqualTo(actualRawImportRequest.getFilename()); + }); + assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> + assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); + assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_USER_AGENT)).hasSize(1).allSatisfy(header -> + assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); + } @After public void after() throws Exception { From f00aa123b7dd9c8b5933095c095dd079222b8f8f Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Wed, 19 May 2021 16:16:57 +0200 Subject: [PATCH 24/51] Correct comment --- .../java/com/cloudconvert/dto/request/Base64ImportRequest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/cloudconvert/dto/request/Base64ImportRequest.java b/src/main/java/com/cloudconvert/dto/request/Base64ImportRequest.java index b3aab0b..b75c399 100644 --- a/src/main/java/com/cloudconvert/dto/request/Base64ImportRequest.java +++ b/src/main/java/com/cloudconvert/dto/request/Base64ImportRequest.java @@ -15,7 +15,7 @@ public class Base64ImportRequest extends TaskRequest{ /*** - * (required) The raw file content. + * (required) The base64 encoded file content. */ private String file; From e4fd6b9e90551987e931bec59120fe67b1a1a879 Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Wed, 19 May 2021 16:25:56 +0200 Subject: [PATCH 25/51] Bump version --- README.md | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index de1fc48..775a019 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Add the following dependency to your pom.xml: com.cloudconvert cloudconvert-java - 1.0.6 + 1.0.7 ``` diff --git a/pom.xml b/pom.xml index 66a119a..62e9e2c 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ com.cloudconvert cloudconvert-java - 1.0.6 + 1.0.7 cloudconvert-java CloudConvert is an online file converter API - more than 200 different audio, video, document, ebook, archive, image, spreadsheet and presentation formats supported. From b3ee89fd9866244d7a66e256c362e39e94c237e3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 4 Jun 2021 02:33:00 +0000 Subject: [PATCH 26/51] Bump httpclient from 4.5.12 to 4.5.13 Bumps httpclient from 4.5.12 to 4.5.13. --- updated-dependencies: - dependency-name: org.apache.httpcomponents:httpclient dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 62e9e2c..dc7031c 100644 --- a/pom.xml +++ b/pom.xml @@ -55,7 +55,7 @@ 1.8 1.8 - 4.5.12 + 4.5.13 4.1.4 4.5.12 1.24 From 8aa8bd6034301b482b0bd5714bb520cd2082ee81 Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Sat, 5 Jun 2021 11:01:06 +0200 Subject: [PATCH 27/51] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 775a019..d2de217 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ new CloudConvertClient(new EnvironmentVariableSettingsProvider()); new CloudConvertClient(new PropertyFileSettingsProvider("custom.properties")); // Using configuration from string variables -new CloudConvertClient(new StringSettingsProvider("api-url", "webhook-signing-secret", false)); +new CloudConvertClient(new StringSettingsProvider("api-key", "webhook-signing-secret", false)); // Using configuration from system properties new CloudConvertClient(new SystemPropertySettingsProvider()); @@ -57,7 +57,7 @@ new AsyncCloudConvertClient(new EnvironmentVariableSettingsProvider()); new AsyncCloudConvertClient(new PropertyFileSettingsProvider("custom.properties")); // Using configuration from string variables -new AsyncCloudConvertClient(new StringSettingsProvider("api-url", "webhook-signing-secret", false)); +new AsyncCloudConvertClient(new StringSettingsProvider("api-key", "webhook-signing-secret", false)); // Using configuration from system properties new AsyncCloudConvertClient(new SystemPropertySettingsProvider()); From 20f1afa8c25a057cd9d862f229c99f6ecc5e31f3 Mon Sep 17 00:00:00 2001 From: Vadim Kraus <38394456+VadimKraus@users.noreply.github.com> Date: Wed, 9 Jun 2021 16:02:52 +0200 Subject: [PATCH 28/51] Update AbstractSettingsProvider.java --- .../cloudconvert/client/setttings/AbstractSettingsProvider.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/cloudconvert/client/setttings/AbstractSettingsProvider.java b/src/main/java/com/cloudconvert/client/setttings/AbstractSettingsProvider.java index b9ed300..ced89f5 100644 --- a/src/main/java/com/cloudconvert/client/setttings/AbstractSettingsProvider.java +++ b/src/main/java/com/cloudconvert/client/setttings/AbstractSettingsProvider.java @@ -39,7 +39,7 @@ protected AbstractSettingsProvider( private void init(final String apiKey, final String webhookSigningSecret, final String useSandbox) { this.apiKey = Optional.ofNullable(apiKey) - .orElseThrow(() -> new IllegalArgumentException("Could not resolve " + USE_SANDBOX + ", make sure it is set correctly ...")); + .orElseThrow(() -> new IllegalArgumentException("Could not resolve " + API_KEY + ", make sure it is set correctly ...")); this.webhookSigningSecret = Optional.ofNullable(webhookSigningSecret) .orElseThrow(() -> new IllegalArgumentException("Could not resolve " + WEBHOOK_SIGNING_SECRET + ", make sure it is set correctly ...")); this.apiUrl = Boolean.parseBoolean(useSandbox) ? API_URL_SANDBOX : API_URL_LIVE; From 4dfed20e2498a861ac2bda3f75c9fd92630364c4 Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Wed, 17 Nov 2021 14:17:00 +0100 Subject: [PATCH 29/51] Update deps --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index dc7031c..81587dc 100644 --- a/pom.xml +++ b/pom.xml @@ -16,7 +16,7 @@ The MIT License - https://raw.githubusercontent.com/ConvertAPI/convertapi-java/master/LICENSE.txt + https://opensource.org/licenses/MIT repo @@ -58,13 +58,13 @@ 4.5.13 4.1.4 4.5.12 - 1.24 + 1.27 2.10.5.1 1.7.30 19.0.0 - 29.0-jre + 30.0-jre 1.18.12 From 16375db8504ebde97fdb7d0ff62638db01d3bf39 Mon Sep 17 00:00:00 2001 From: Oleksandr Kyetov Date: Wed, 1 Dec 2021 01:36:27 -0500 Subject: [PATCH 30/51] Add status code and message --- pom.xml | 4 +- .../client/AsyncCloudConvertClient.java | 17 ++- .../client/CloudConvertClient.java | 19 ++- .../dto/response/ErrorResponse.java | 23 ++++ .../cloudconvert/dto/result/AsyncResult.java | 7 +- .../dto/result/FutureAsyncResult.java | 10 +- .../com/cloudconvert/dto/result/Result.java | 5 +- .../com/cloudconvert/dto/result/Status.java | 34 +++++ .../CloudConvertClientException.java | 23 ++++ .../exception/CloudConvertException.java | 39 ++++++ .../CloudConvertServerException.java | 23 ++++ .../executor/RequestExecutor.java | 4 +- .../extractor/ResultExtractor.java | 22 ++- .../response/DefaultResponseProcessor.java | 22 +-- .../processor/response/ResponseProcessor.java | 5 +- .../successful/ContentResponseProcessor.java | 9 +- .../InputStreamResponseProcessor.java | 10 +- .../NoContentResponseProcessor.java | 13 +- .../AbstractCaptureWebsitesResource.java | 4 +- .../AbstractConvertFilesResource.java | 12 +- .../AbstractCreateArchivesResource.java | 4 +- .../AbstractCreateThumbnailsResource.java | 4 +- .../AbstractExecuteCommandsResource.java | 4 +- .../resource/AbstractExportFilesResource.java | 14 +- .../resource/AbstractFilesResource.java | 4 +- .../resource/AbstractGetMetadataResource.java | 4 +- .../resource/AbstractImportFilesResource.java | 51 ++++--- .../resource/AbstractJobsResource.java | 20 +-- .../resource/AbstractMergeFilesResource.java | 4 +- .../AbstractOptimizeFilesResource.java | 4 +- .../resource/AbstractTasksResource.java | 72 +++++----- .../resource/AbstractUsersResource.java | 4 +- .../resource/AbstractWebhooksResource.java | 12 +- .../AbstractWriteMetadataResource.java | 4 +- .../async/AsyncImportFilesResource.java | 116 +++++++++------- .../resource/async/AsyncTasksResource.java | 44 +++--- .../sync/CaptureWebsitesResource.java | 4 +- .../resource/sync/ConvertFilesResource.java | 12 +- .../resource/sync/CreateArchivesResource.java | 4 +- .../sync/CreateThumbnailsResource.java | 4 +- .../sync/ExecuteCommandsResource.java | 4 +- .../resource/sync/ExportFilesResource.java | 14 +- .../resource/sync/FilesResource.java | 4 +- .../resource/sync/GetMetadataResource.java | 4 +- .../resource/sync/ImportFilesResource.java | 123 ++++++++++------- .../resource/sync/JobsResource.java | 20 +-- .../resource/sync/MergeFilesResource.java | 4 +- .../resource/sync/OptimizeFilesResource.java | 4 +- .../resource/sync/TasksResource.java | 129 +++++++++--------- .../resource/sync/UsersResource.java | 4 +- .../resource/sync/WebhookResource.java | 12 +- .../resource/sync/WriteMetadataResource.java | 4 +- .../AsyncCloudConvertClientExceptionTest.java | 73 ++++++++++ ...AsyncImportsAndExportsIntegrationTest.java | 78 ++++++----- .../integration/AsyncJobsIntegrationTest.java | 14 +- .../AsyncTasksIntegrationTest.java | 104 +++++++------- .../AsyncWebhooksIntegrationTest.java | 8 +- .../CloudConvertClientExceptionTest.java | 73 ++++++++++ .../ImportsAndExportsIntegrationTest.java | 78 ++++++----- .../test/integration/JobsIntegrationTest.java | 14 +- .../integration/TasksIntegrationTest.java | 107 ++++++++------- .../integration/WebhooksIntegrationTest.java | 8 +- .../test/unit/AsyncImportsUnitTest.java | 32 +++-- .../test/unit/AsyncTasksUnitTest.java | 28 ++-- .../test/unit/ImportsUnitTest.java | 34 +++-- .../cloudconvert/test/unit/TasksUnitTest.java | 28 ++-- .../resources/invalid-application.properties | 3 + 67 files changed, 1110 insertions(+), 592 deletions(-) create mode 100644 src/main/java/com/cloudconvert/dto/response/ErrorResponse.java create mode 100644 src/main/java/com/cloudconvert/dto/result/Status.java create mode 100644 src/main/java/com/cloudconvert/exception/CloudConvertClientException.java create mode 100644 src/main/java/com/cloudconvert/exception/CloudConvertException.java create mode 100644 src/main/java/com/cloudconvert/exception/CloudConvertServerException.java create mode 100644 src/test/java/com/cloudconvert/test/integration/AsyncCloudConvertClientExceptionTest.java create mode 100644 src/test/java/com/cloudconvert/test/integration/CloudConvertClientExceptionTest.java create mode 100644 src/test/resources/invalid-application.properties diff --git a/pom.xml b/pom.xml index 81587dc..8a61a84 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ com.cloudconvert cloudconvert-java - 1.0.7 + 2.0.0 cloudconvert-java CloudConvert is an online file converter API - more than 200 different audio, video, document, ebook, archive, image, spreadsheet and presentation formats supported. @@ -48,8 +48,6 @@ - - UTF-8 1.8 diff --git a/src/main/java/com/cloudconvert/client/AsyncCloudConvertClient.java b/src/main/java/com/cloudconvert/client/AsyncCloudConvertClient.java index c6d45df..a2e32cc 100644 --- a/src/main/java/com/cloudconvert/client/AsyncCloudConvertClient.java +++ b/src/main/java/com/cloudconvert/client/AsyncCloudConvertClient.java @@ -13,7 +13,22 @@ import com.cloudconvert.dto.result.AsyncResult; import com.cloudconvert.executor.AsyncRequestExecutor; import com.cloudconvert.extractor.ResultExtractor; -import com.cloudconvert.resource.async.*; +import com.cloudconvert.resource.async.AsyncCaptureWebsitesResource; +import com.cloudconvert.resource.async.AsyncConvertFilesResource; +import com.cloudconvert.resource.async.AsyncCreateArchivesResource; +import com.cloudconvert.resource.async.AsyncCreateThumbnailsResource; +import com.cloudconvert.resource.async.AsyncExecuteCommandsResource; +import com.cloudconvert.resource.async.AsyncExportFilesResource; +import com.cloudconvert.resource.async.AsyncFilesResource; +import com.cloudconvert.resource.async.AsyncGetMetadataResource; +import com.cloudconvert.resource.async.AsyncImportFilesResource; +import com.cloudconvert.resource.async.AsyncJobsResource; +import com.cloudconvert.resource.async.AsyncMergeFilesResource; +import com.cloudconvert.resource.async.AsyncOptimizeFilesResource; +import com.cloudconvert.resource.async.AsyncTasksResource; +import com.cloudconvert.resource.async.AsyncUsersResource; +import com.cloudconvert.resource.async.AsyncWebhookResource; +import com.cloudconvert.resource.async.AsyncWriteMetadataResource; import java.io.IOException; import java.io.InputStream; diff --git a/src/main/java/com/cloudconvert/client/CloudConvertClient.java b/src/main/java/com/cloudconvert/client/CloudConvertClient.java index aa8390c..d8ba070 100644 --- a/src/main/java/com/cloudconvert/client/CloudConvertClient.java +++ b/src/main/java/com/cloudconvert/client/CloudConvertClient.java @@ -13,7 +13,22 @@ import com.cloudconvert.dto.result.Result; import com.cloudconvert.executor.RequestExecutor; import com.cloudconvert.extractor.ResultExtractor; -import com.cloudconvert.resource.sync.*; +import com.cloudconvert.resource.sync.CaptureWebsitesResource; +import com.cloudconvert.resource.sync.ConvertFilesResource; +import com.cloudconvert.resource.sync.CreateArchivesResource; +import com.cloudconvert.resource.sync.CreateThumbnailsResource; +import com.cloudconvert.resource.sync.ExecuteCommandsResource; +import com.cloudconvert.resource.sync.ExportFilesResource; +import com.cloudconvert.resource.sync.FilesResource; +import com.cloudconvert.resource.sync.GetMetadataResource; +import com.cloudconvert.resource.sync.ImportFilesResource; +import com.cloudconvert.resource.sync.JobsResource; +import com.cloudconvert.resource.sync.MergeFilesResource; +import com.cloudconvert.resource.sync.OptimizeFilesResource; +import com.cloudconvert.resource.sync.TasksResource; +import com.cloudconvert.resource.sync.UsersResource; +import com.cloudconvert.resource.sync.WebhookResource; +import com.cloudconvert.resource.sync.WriteMetadataResource; import java.io.IOException; import java.io.InputStream; @@ -53,7 +68,7 @@ public CloudConvertClient( new ExecuteCommandsResource(settingsProvider, objectMapperProvider, requestExecutor), new CreateThumbnailsResource(settingsProvider, objectMapperProvider, requestExecutor), new GetMetadataResource(settingsProvider, objectMapperProvider, requestExecutor), - new WriteMetadataResource(settingsProvider, objectMapperProvider, requestExecutor) + new WriteMetadataResource(settingsProvider, objectMapperProvider, requestExecutor) ), new JobsResource(settingsProvider, objectMapperProvider, requestExecutor) ); diff --git a/src/main/java/com/cloudconvert/dto/response/ErrorResponse.java b/src/main/java/com/cloudconvert/dto/response/ErrorResponse.java new file mode 100644 index 0000000..2ac3fa8 --- /dev/null +++ b/src/main/java/com/cloudconvert/dto/response/ErrorResponse.java @@ -0,0 +1,23 @@ +package com.cloudconvert.dto.response; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import javax.annotation.Nullable; +import java.util.Map; + +@Getter +@Setter +@Accessors(chain = true) +@ToString +public class ErrorResponse { + + private String code; + + private String message; + + @Nullable + private Map errors; +} diff --git a/src/main/java/com/cloudconvert/dto/result/AsyncResult.java b/src/main/java/com/cloudconvert/dto/result/AsyncResult.java index 84e4df5..4019411 100644 --- a/src/main/java/com/cloudconvert/dto/result/AsyncResult.java +++ b/src/main/java/com/cloudconvert/dto/result/AsyncResult.java @@ -1,5 +1,8 @@ package com.cloudconvert.dto.result; +import com.cloudconvert.exception.CloudConvertClientException; +import com.cloudconvert.exception.CloudConvertServerException; + import java.io.IOException; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; @@ -7,9 +10,9 @@ public abstract class AsyncResult extends AbstractResult { - public abstract Result get() throws InterruptedException, ExecutionException, IOException; + public abstract Result get() throws InterruptedException, ExecutionException, IOException, CloudConvertClientException, CloudConvertServerException; public abstract Result get( final long timeout, final TimeUnit timeUnit - ) throws InterruptedException, ExecutionException, TimeoutException, IOException; + ) throws InterruptedException, ExecutionException, TimeoutException, IOException, CloudConvertClientException, CloudConvertServerException; } diff --git a/src/main/java/com/cloudconvert/dto/result/FutureAsyncResult.java b/src/main/java/com/cloudconvert/dto/result/FutureAsyncResult.java index 30066d8..d1ed41f 100644 --- a/src/main/java/com/cloudconvert/dto/result/FutureAsyncResult.java +++ b/src/main/java/com/cloudconvert/dto/result/FutureAsyncResult.java @@ -1,5 +1,7 @@ package com.cloudconvert.dto.result; +import com.cloudconvert.exception.CloudConvertClientException; +import com.cloudconvert.exception.CloudConvertServerException; import com.cloudconvert.extractor.ResultExtractor; import com.fasterxml.jackson.core.type.TypeReference; import lombok.Builder; @@ -24,20 +26,22 @@ public class FutureAsyncResult extends AsyncResult { @Nullable private Result result; - public Result get() throws InterruptedException, ExecutionException, IOException { + public Result get() throws InterruptedException, ExecutionException, IOException, CloudConvertClientException, CloudConvertServerException { return extractResult(future.get()); } public Result get( final long timeout, final TimeUnit timeUnit - ) throws InterruptedException, ExecutionException, TimeoutException, IOException { + ) throws InterruptedException, ExecutionException, TimeoutException, IOException, CloudConvertClientException, CloudConvertServerException { return extractResult(future.get(timeout, timeUnit)); } /** * This method should be synchronized in order to prevent unexpected behavior if multiple threads tries to access an input stream */ - private synchronized Result extractResult(final HttpResponse httpResponse) throws IOException { + private synchronized Result extractResult( + final HttpResponse httpResponse + ) throws IOException, CloudConvertClientException, CloudConvertServerException { // Cache result, in case user will try to call get() multiple times if (result == null) { result = resultExtractor.extract(httpResponse, typeReference); diff --git a/src/main/java/com/cloudconvert/dto/result/Result.java b/src/main/java/com/cloudconvert/dto/result/Result.java index 71a2575..424afd8 100644 --- a/src/main/java/com/cloudconvert/dto/result/Result.java +++ b/src/main/java/com/cloudconvert/dto/result/Result.java @@ -10,14 +10,11 @@ public class Result extends AbstractResult { @Getter - private int status; + private Status status; @Getter private Map headers; - @Getter - private String message; - @Getter @Nullable private T body; diff --git a/src/main/java/com/cloudconvert/dto/result/Status.java b/src/main/java/com/cloudconvert/dto/result/Status.java new file mode 100644 index 0000000..0208da4 --- /dev/null +++ b/src/main/java/com/cloudconvert/dto/result/Status.java @@ -0,0 +1,34 @@ +package com.cloudconvert.dto.result; + +import lombok.Builder; +import lombok.Getter; + +@Builder +public class Status { + + @Getter + private int code; + + @Getter + private String reason; + + public boolean isInformational() { + return 100 <= code && code <= 199; + } + + public boolean isSuccessful() { + return 200 <= code && code <= 299; + } + + public boolean isRedirection() { + return 300 <= code && code <= 399; + } + + public boolean isClientError() { + return 400 <= code && code <= 499; + } + + public boolean isServerError() { + return 500 <= code && code <= 599; + } +} diff --git a/src/main/java/com/cloudconvert/exception/CloudConvertClientException.java b/src/main/java/com/cloudconvert/exception/CloudConvertClientException.java new file mode 100644 index 0000000..d24a1e5 --- /dev/null +++ b/src/main/java/com/cloudconvert/exception/CloudConvertClientException.java @@ -0,0 +1,23 @@ +package com.cloudconvert.exception; + +import com.cloudconvert.client.mapper.ObjectMapperProvider; +import com.cloudconvert.dto.result.Status; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Map; + +public class CloudConvertClientException extends CloudConvertException { + + public CloudConvertClientException( + final Status status, final Map headers, final InputStream inputStream + ) throws IOException { + this(status, headers, inputStream, new ObjectMapperProvider()); + } + + public CloudConvertClientException( + final Status status, final Map headers, final InputStream inputStream, final ObjectMapperProvider objectMapperProvider + ) throws IOException { + super(status, headers, inputStream, objectMapperProvider); + } +} diff --git a/src/main/java/com/cloudconvert/exception/CloudConvertException.java b/src/main/java/com/cloudconvert/exception/CloudConvertException.java new file mode 100644 index 0000000..2fba097 --- /dev/null +++ b/src/main/java/com/cloudconvert/exception/CloudConvertException.java @@ -0,0 +1,39 @@ +package com.cloudconvert.exception; + +import com.cloudconvert.client.mapper.ObjectMapperProvider; +import com.cloudconvert.dto.response.ErrorResponse; +import com.cloudconvert.dto.result.Status; +import com.google.common.base.Charsets; +import com.google.common.io.ByteSource; +import lombok.Getter; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Map; + +public class CloudConvertException extends Exception { + + @Getter + private final Status status; + + @Getter + private final Map headers; + + @Getter + private final ErrorResponse body; + + public CloudConvertException( + final Status status, final Map headers, final InputStream inputStream, final ObjectMapperProvider objectMapperProvider + ) throws IOException { + final ByteSource byteSource = new ByteSource() { + @Override + public InputStream openStream() throws IOException { + return inputStream; + } + }; + + this.status = status; + this.headers = headers; + this.body = objectMapperProvider.provide().readValue(byteSource.asCharSource(Charsets.UTF_8).read(), ErrorResponse.class); + } +} diff --git a/src/main/java/com/cloudconvert/exception/CloudConvertServerException.java b/src/main/java/com/cloudconvert/exception/CloudConvertServerException.java new file mode 100644 index 0000000..22a0e69 --- /dev/null +++ b/src/main/java/com/cloudconvert/exception/CloudConvertServerException.java @@ -0,0 +1,23 @@ +package com.cloudconvert.exception; + +import com.cloudconvert.client.mapper.ObjectMapperProvider; +import com.cloudconvert.dto.result.Status; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Map; + +public class CloudConvertServerException extends CloudConvertException { + + public CloudConvertServerException( + final Status status, final Map headers, final InputStream inputStream + ) throws IOException { + this(status, headers, inputStream, new ObjectMapperProvider()); + } + + public CloudConvertServerException( + final Status status, final Map headers, final InputStream inputStream, final ObjectMapperProvider objectMapperProvider + ) throws IOException { + super(status, headers, inputStream, objectMapperProvider); + } +} diff --git a/src/main/java/com/cloudconvert/executor/RequestExecutor.java b/src/main/java/com/cloudconvert/executor/RequestExecutor.java index 408bfe2..107b1a4 100644 --- a/src/main/java/com/cloudconvert/executor/RequestExecutor.java +++ b/src/main/java/com/cloudconvert/executor/RequestExecutor.java @@ -2,6 +2,8 @@ import com.cloudconvert.client.http.CloseableHttpClientProvider; import com.cloudconvert.dto.result.Result; +import com.cloudconvert.exception.CloudConvertClientException; +import com.cloudconvert.exception.CloudConvertServerException; import com.cloudconvert.extractor.ResultExtractor; import com.fasterxml.jackson.core.type.TypeReference; import org.apache.http.client.methods.HttpUriRequest; @@ -21,7 +23,7 @@ public RequestExecutor( public Result execute( @NotNull final HttpUriRequest httpUriRequest, @NotNull final TypeReference typeReference - ) throws IOException { + ) throws IOException, CloudConvertClientException, CloudConvertServerException { return getResultExtractor().extract(getCloseableHttpClient().execute(httpUriRequest), typeReference); } } diff --git a/src/main/java/com/cloudconvert/extractor/ResultExtractor.java b/src/main/java/com/cloudconvert/extractor/ResultExtractor.java index ee1caee..bf17445 100644 --- a/src/main/java/com/cloudconvert/extractor/ResultExtractor.java +++ b/src/main/java/com/cloudconvert/extractor/ResultExtractor.java @@ -2,6 +2,9 @@ import com.cloudconvert.client.mapper.ObjectMapperProvider; import com.cloudconvert.dto.result.Result; +import com.cloudconvert.dto.result.Status; +import com.cloudconvert.exception.CloudConvertClientException; +import com.cloudconvert.exception.CloudConvertServerException; import com.cloudconvert.processor.response.DefaultResponseProcessor; import com.cloudconvert.processor.response.ResponseProcessor; import com.cloudconvert.processor.response.successful.ContentResponseProcessor; @@ -13,13 +16,16 @@ import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; +import org.apache.http.StatusLine; import org.apache.http.entity.InputStreamEntity; import org.apache.http.impl.io.EmptyInputStream; import java.io.IOException; import java.io.InputStream; +import java.util.Arrays; import java.util.Map; import java.util.Optional; +import java.util.stream.Collectors; public class ResultExtractor { @@ -50,15 +56,23 @@ public ResultExtractor(final ObjectMapperProvider objectMapperProvider) { public Result extract( final HttpResponse httpResponse, final TypeReference typeReference - ) throws IOException { - final int status = httpResponse.getStatusLine().getStatusCode(); - final Header[] headers = httpResponse.getAllHeaders(); + ) throws IOException, CloudConvertClientException, CloudConvertServerException { + final StatusLine statusLine = httpResponse.getStatusLine(); + + final Status status = Status.builder().code(statusLine.getStatusCode()).reason(statusLine.getReasonPhrase()).build(); + final Map headers = Arrays.stream(httpResponse.getAllHeaders()).collect(Collectors.toMap(Header::getName, Header::getValue, (v1, v2) -> v1 + ", " + v2)); final HttpEntity httpEntity = Optional.ofNullable(httpResponse.getEntity()).orElse(new InputStreamEntity(EmptyInputStream.INSTANCE)); try (final InputStream inputStream = httpEntity.getContent()) { - if (status >= 200 && status <= 299) { + if (status.isSuccessful()) { return responseProcessors.getOrDefault(typeReference, defaultResponseProcessor).process(status, headers, inputStream, typeReference); } + if (status.isClientError()) { + throw new CloudConvertClientException(status, headers, inputStream); + } + if (status.isServerError()) { + throw new CloudConvertServerException(status, headers, inputStream); + } return defaultResponseProcessor.process(status, headers, inputStream, typeReference); } diff --git a/src/main/java/com/cloudconvert/processor/response/DefaultResponseProcessor.java b/src/main/java/com/cloudconvert/processor/response/DefaultResponseProcessor.java index 941a8c1..2b5af2f 100644 --- a/src/main/java/com/cloudconvert/processor/response/DefaultResponseProcessor.java +++ b/src/main/java/com/cloudconvert/processor/response/DefaultResponseProcessor.java @@ -1,30 +1,18 @@ package com.cloudconvert.processor.response; import com.cloudconvert.dto.result.Result; +import com.cloudconvert.dto.result.Status; import com.fasterxml.jackson.core.type.TypeReference; -import com.google.common.base.Charsets; -import com.google.common.io.ByteSource; -import org.apache.http.Header; -import java.io.IOException; import java.io.InputStream; -import java.util.Arrays; -import java.util.stream.Collectors; +import java.util.Map; public class DefaultResponseProcessor implements ResponseProcessor { @Override public Result process( - final int status, final Header[] headers, final InputStream inputStream, final TypeReference typeReference - ) throws IOException { - final ByteSource byteSource = new ByteSource() { - @Override - public InputStream openStream() throws IOException { - return inputStream; - } - }; - - return Result.builder().status(status).headers(Arrays.stream(headers).collect(Collectors.toMap(Header::getName, Header::getValue))) - .message(byteSource.asCharSource(Charsets.UTF_8).read()).build(); + final Status status, final Map headers, final InputStream inputStream, final TypeReference typeReference + ) { + return Result.builder().status(status).headers(headers).build(); } } diff --git a/src/main/java/com/cloudconvert/processor/response/ResponseProcessor.java b/src/main/java/com/cloudconvert/processor/response/ResponseProcessor.java index e18234e..c88e319 100644 --- a/src/main/java/com/cloudconvert/processor/response/ResponseProcessor.java +++ b/src/main/java/com/cloudconvert/processor/response/ResponseProcessor.java @@ -1,15 +1,16 @@ package com.cloudconvert.processor.response; import com.cloudconvert.dto.result.Result; +import com.cloudconvert.dto.result.Status; import com.fasterxml.jackson.core.type.TypeReference; -import org.apache.http.Header; import java.io.IOException; import java.io.InputStream; +import java.util.Map; public interface ResponseProcessor { Result process( - final int status, final Header[] headers, final InputStream inputStream, final TypeReference typeReference + final Status status, final Map headers, final InputStream inputStream, final TypeReference typeReference ) throws IOException; } diff --git a/src/main/java/com/cloudconvert/processor/response/successful/ContentResponseProcessor.java b/src/main/java/com/cloudconvert/processor/response/successful/ContentResponseProcessor.java index 0febba3..661219c 100644 --- a/src/main/java/com/cloudconvert/processor/response/successful/ContentResponseProcessor.java +++ b/src/main/java/com/cloudconvert/processor/response/successful/ContentResponseProcessor.java @@ -2,6 +2,7 @@ import com.cloudconvert.client.mapper.ObjectMapperProvider; import com.cloudconvert.dto.result.Result; +import com.cloudconvert.dto.result.Status; import com.cloudconvert.processor.content.ContentPreProcessor; import com.cloudconvert.processor.content.DataExtractingContentPreProcessor; import com.cloudconvert.processor.content.DefaultContentPreProcessor; @@ -9,13 +10,10 @@ import com.cloudconvert.resource.AbstractResource; import com.fasterxml.jackson.core.type.TypeReference; import com.google.common.collect.ImmutableMap; -import org.apache.http.Header; import java.io.IOException; import java.io.InputStream; -import java.util.Arrays; import java.util.Map; -import java.util.stream.Collectors; public class ContentResponseProcessor implements ResponseProcessor { @@ -39,11 +37,10 @@ public ContentResponseProcessor(final ObjectMapperProvider objectMapperProvider) @Override public Result process( - final int status, final Header[] headers, final InputStream inputStream, final TypeReference typeReference + final Status status, final Map headers, final InputStream inputStream, final TypeReference typeReference ) throws IOException { final String string = contentPreProcessors.getOrDefault(typeReference, defaultContentPreProcessor).preProcess(inputStream); - return Result.builder().status(status).headers(Arrays.stream(headers).collect(Collectors.toMap(Header::getName, Header::getValue, (v1, v2) -> v1 + ", " + v2))) - .message("").body(objectMapperProvider.provide().readValue(string, typeReference)).build(); + return Result.builder().status(status).headers(headers).body(objectMapperProvider.provide().readValue(string, typeReference)).build(); } } diff --git a/src/main/java/com/cloudconvert/processor/response/successful/InputStreamResponseProcessor.java b/src/main/java/com/cloudconvert/processor/response/successful/InputStreamResponseProcessor.java index ae9a089..a6da8f4 100644 --- a/src/main/java/com/cloudconvert/processor/response/successful/InputStreamResponseProcessor.java +++ b/src/main/java/com/cloudconvert/processor/response/successful/InputStreamResponseProcessor.java @@ -1,22 +1,21 @@ package com.cloudconvert.processor.response.successful; import com.cloudconvert.dto.result.Result; +import com.cloudconvert.dto.result.Status; import com.cloudconvert.processor.response.ResponseProcessor; import com.fasterxml.jackson.core.type.TypeReference; import com.google.common.io.ByteSource; -import org.apache.http.Header; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; -import java.util.Arrays; -import java.util.stream.Collectors; +import java.util.Map; public class InputStreamResponseProcessor implements ResponseProcessor { @Override public Result process( - final int status, final Header[] headers, final InputStream inputStream, final TypeReference typeReference + final Status status, final Map headers, final InputStream inputStream, final TypeReference typeReference ) throws IOException { final ByteSource byteSource = new ByteSource() { @Override @@ -25,7 +24,6 @@ public InputStream openStream() throws IOException { } }; - return Result.builder().headers(Arrays.stream(headers).collect(Collectors.toMap(Header::getName, Header::getValue))) - .message("").body((T) new ByteArrayInputStream(byteSource.read())).status(status).build(); + return Result.builder().status(status).headers(headers).body((T) new ByteArrayInputStream(byteSource.read())).build(); } } diff --git a/src/main/java/com/cloudconvert/processor/response/successful/NoContentResponseProcessor.java b/src/main/java/com/cloudconvert/processor/response/successful/NoContentResponseProcessor.java index c2b1d72..040cfca 100644 --- a/src/main/java/com/cloudconvert/processor/response/successful/NoContentResponseProcessor.java +++ b/src/main/java/com/cloudconvert/processor/response/successful/NoContentResponseProcessor.java @@ -1,22 +1,19 @@ package com.cloudconvert.processor.response.successful; import com.cloudconvert.dto.result.Result; +import com.cloudconvert.dto.result.Status; import com.cloudconvert.processor.response.ResponseProcessor; import com.fasterxml.jackson.core.type.TypeReference; -import org.apache.http.Header; -import java.io.IOException; import java.io.InputStream; -import java.util.Arrays; -import java.util.stream.Collectors; +import java.util.Map; public class NoContentResponseProcessor implements ResponseProcessor { @Override public Result process( - final int status, final Header[] headers, final InputStream inputStream, final TypeReference typeReference - ) throws IOException { - return Result.builder().headers(Arrays.stream(headers).collect(Collectors.toMap(Header::getName, Header::getValue))) - .message("").status(status).build(); + final Status status, final Map headers, final InputStream inputStream, final TypeReference typeReference + ) { + return Result.builder().status(status).headers(headers).build(); } } diff --git a/src/main/java/com/cloudconvert/resource/AbstractCaptureWebsitesResource.java b/src/main/java/com/cloudconvert/resource/AbstractCaptureWebsitesResource.java index b67d522..468b037 100644 --- a/src/main/java/com/cloudconvert/resource/AbstractCaptureWebsitesResource.java +++ b/src/main/java/com/cloudconvert/resource/AbstractCaptureWebsitesResource.java @@ -5,6 +5,8 @@ import com.cloudconvert.dto.request.CaptureWebsitesTaskRequest; 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 AbstractCaptureWebsitesResource( */ public abstract TRAR capture( @NotNull final CaptureWebsitesTaskRequest captureWebsitesTaskRequest - ) throws IOException, URISyntaxException; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; protected HttpUriRequest getCaptureHttpUriRequest( @NotNull final CaptureWebsitesTaskRequest captureWebsitesTaskRequest diff --git a/src/main/java/com/cloudconvert/resource/AbstractConvertFilesResource.java b/src/main/java/com/cloudconvert/resource/AbstractConvertFilesResource.java index 2ab3d7b..55d04a1 100644 --- a/src/main/java/com/cloudconvert/resource/AbstractConvertFilesResource.java +++ b/src/main/java/com/cloudconvert/resource/AbstractConvertFilesResource.java @@ -7,6 +7,8 @@ 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.converter.AlternativeToNameValuePairsConverter; @@ -57,7 +59,7 @@ public AbstractConvertFilesResource( */ public abstract TRAR convert( @NotNull final ConvertFilesTaskRequest convertFilesTaskRequest - ) throws IOException, URISyntaxException; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; protected HttpUriRequest getConvertHttpUriRequest( @NotNull final ConvertFilesTaskRequest convertFilesTaskRequest @@ -75,7 +77,7 @@ protected HttpUriRequest getConvertHttpUriRequest( * @throws IOException * @throws URISyntaxException */ - public abstract ORP convertFormats() throws IOException, URISyntaxException; + public abstract ORP convertFormats() throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; /** * List all supported formats, their engines and possible options. @@ -91,7 +93,7 @@ protected HttpUriRequest getConvertHttpUriRequest( */ public abstract ORP convertFormats( @NotNull final Map filters - ) throws IOException, URISyntaxException; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; /** * List all supported formats, their engines and possible options. @@ -108,7 +110,7 @@ public abstract ORP convertFormats( */ public abstract ORP 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. @@ -127,7 +129,7 @@ public abstract ORP convertFormats( */ public abstract ORP convertFormats( @NotNull final Map filters, @NotNull final List includes, @Nullable final Boolean alternative - ) throws IOException, URISyntaxException; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; protected HttpUriRequest getConvertFormatsHttpUriRequest( @NotNull final Map filters, @NotNull final List includes, @Nullable final Boolean alternative diff --git a/src/main/java/com/cloudconvert/resource/AbstractCreateArchivesResource.java b/src/main/java/com/cloudconvert/resource/AbstractCreateArchivesResource.java index bbe01c8..edd4aa0 100644 --- a/src/main/java/com/cloudconvert/resource/AbstractCreateArchivesResource.java +++ b/src/main/java/com/cloudconvert/resource/AbstractCreateArchivesResource.java @@ -5,6 +5,8 @@ import com.cloudconvert.dto.request.CreateArchivesTaskRequest; 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 AbstractCreateArchivesResource( */ public abstract TRAR archive( @NotNull final CreateArchivesTaskRequest createArchivesTaskRequest - ) throws IOException, URISyntaxException; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; protected HttpUriRequest getArchiveHttpUriRequest( @NotNull final CreateArchivesTaskRequest createArchivesTaskRequest diff --git a/src/main/java/com/cloudconvert/resource/AbstractCreateThumbnailsResource.java b/src/main/java/com/cloudconvert/resource/AbstractCreateThumbnailsResource.java index 1e1e8da..1158fc8 100644 --- a/src/main/java/com/cloudconvert/resource/AbstractCreateThumbnailsResource.java +++ b/src/main/java/com/cloudconvert/resource/AbstractCreateThumbnailsResource.java @@ -5,6 +5,8 @@ import com.cloudconvert.dto.request.CreateThumbnailsTaskRequest; 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 AbstractCreateThumbnailsResource( */ public abstract TRAR thumbnail( @NotNull final CreateThumbnailsTaskRequest createThumbnailsTaskRequest - ) throws IOException, URISyntaxException; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; protected HttpUriRequest getThumbnailHttpUriRequest( @NotNull final CreateThumbnailsTaskRequest createThumbnailsTaskRequest diff --git a/src/main/java/com/cloudconvert/resource/AbstractExecuteCommandsResource.java b/src/main/java/com/cloudconvert/resource/AbstractExecuteCommandsResource.java index f80bb1d..75fbfec 100644 --- a/src/main/java/com/cloudconvert/resource/AbstractExecuteCommandsResource.java +++ b/src/main/java/com/cloudconvert/resource/AbstractExecuteCommandsResource.java @@ -5,6 +5,8 @@ import com.cloudconvert.dto.request.ExecuteCommandsTaskRequest; 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; @@ -37,7 +39,7 @@ public AbstractExecuteCommandsResource( */ public abstract TRAR command( @NotNull final ExecuteCommandsTaskRequest executeCommandsTaskRequest - ) throws IOException, URISyntaxException; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; protected HttpUriRequest getCommandHttpUriRequest( @NotNull final ExecuteCommandsTaskRequest executeCommandsTaskRequest diff --git a/src/main/java/com/cloudconvert/resource/AbstractExportFilesResource.java b/src/main/java/com/cloudconvert/resource/AbstractExportFilesResource.java index f6b11c5..27d72a5 100644 --- a/src/main/java/com/cloudconvert/resource/AbstractExportFilesResource.java +++ b/src/main/java/com/cloudconvert/resource/AbstractExportFilesResource.java @@ -10,6 +10,8 @@ import com.cloudconvert.dto.request.UrlExportRequest; 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; @@ -49,7 +51,7 @@ public AbstractExportFilesResource( */ public abstract TRAR url( @NotNull final UrlExportRequest urlExportRequest - ) throws IOException, URISyntaxException; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; protected HttpUriRequest getUrlHttpUriRequest( @NotNull final UrlExportRequest urlExportRequest @@ -70,7 +72,7 @@ protected HttpUriRequest getUrlHttpUriRequest( */ public abstract TRAR s3( @NotNull final S3ExportRequest s3ExportRequest - ) throws IOException, URISyntaxException; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; protected HttpUriRequest getS3HttpUriRequest( @NotNull final S3ExportRequest s3ExportRequest @@ -91,7 +93,7 @@ protected HttpUriRequest getS3HttpUriRequest( */ public abstract TRAR azureBlob( @NotNull final AzureBlobExportRequest azureBlobExportRequest - ) throws IOException, URISyntaxException; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; protected HttpUriRequest getAzureBlobHttpUriRequest( @NotNull final AzureBlobExportRequest azureBlobExportRequest @@ -112,7 +114,7 @@ protected HttpUriRequest getAzureBlobHttpUriRequest( */ public abstract TRAR googleCloudStorage( @NotNull final GoogleCloudStorageExportRequest googleCloudStorageExportRequest - ) throws IOException, URISyntaxException; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; protected HttpUriRequest getGoogleCloudStorageHttpUriRequest( @NotNull final GoogleCloudStorageExportRequest googleCloudStorageExportRequest @@ -133,7 +135,7 @@ protected HttpUriRequest getGoogleCloudStorageHttpUriRequest( */ public abstract TRAR openStack( @NotNull final OpenStackExportRequest openStackExportRequest - ) throws IOException, URISyntaxException; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; protected HttpUriRequest getOpenStackStorageHttpUriRequest( @NotNull final OpenStackExportRequest openStackExportRequest @@ -154,7 +156,7 @@ protected HttpUriRequest getOpenStackStorageHttpUriRequest( */ public abstract TRAR sftp( @NotNull final SftpExportRequest sftpExportRequest - ) throws IOException, URISyntaxException; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; protected HttpUriRequest getSftpStorageHttpUriRequest( @NotNull final SftpExportRequest sftpExportRequest diff --git a/src/main/java/com/cloudconvert/resource/AbstractFilesResource.java b/src/main/java/com/cloudconvert/resource/AbstractFilesResource.java index 3cfd3cd..eb30531 100644 --- a/src/main/java/com/cloudconvert/resource/AbstractFilesResource.java +++ b/src/main/java/com/cloudconvert/resource/AbstractFilesResource.java @@ -3,6 +3,8 @@ import com.cloudconvert.client.mapper.ObjectMapperProvider; import com.cloudconvert.client.setttings.SettingsProvider; import com.cloudconvert.dto.result.AbstractResult; +import com.cloudconvert.exception.CloudConvertClientException; +import com.cloudconvert.exception.CloudConvertServerException; import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.client.methods.RequestBuilder; import org.apache.http.client.utils.URIBuilder; @@ -31,7 +33,7 @@ public AbstractFilesResource( */ public abstract ISAR download( @NotNull final String path - ) throws IOException, URISyntaxException; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; protected HttpUriRequest getDownloadHttpUriRequest( @NotNull final String path diff --git a/src/main/java/com/cloudconvert/resource/AbstractGetMetadataResource.java b/src/main/java/com/cloudconvert/resource/AbstractGetMetadataResource.java index 581b7dc..662e6c8 100644 --- a/src/main/java/com/cloudconvert/resource/AbstractGetMetadataResource.java +++ b/src/main/java/com/cloudconvert/resource/AbstractGetMetadataResource.java @@ -5,6 +5,8 @@ import com.cloudconvert.dto.request.GetMetadataTaskRequest; 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 AbstractGetMetadataResource( */ public abstract TRAR metadata( @NotNull final GetMetadataTaskRequest getMetadataTaskRequest - ) throws IOException, URISyntaxException; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; protected HttpUriRequest getMetadataHttpUriRequest( @NotNull final GetMetadataTaskRequest getMetadataTaskRequest diff --git a/src/main/java/com/cloudconvert/resource/AbstractImportFilesResource.java b/src/main/java/com/cloudconvert/resource/AbstractImportFilesResource.java index 5abf604..75e8951 100644 --- a/src/main/java/com/cloudconvert/resource/AbstractImportFilesResource.java +++ b/src/main/java/com/cloudconvert/resource/AbstractImportFilesResource.java @@ -2,9 +2,19 @@ import com.cloudconvert.client.mapper.ObjectMapperProvider; import com.cloudconvert.client.setttings.SettingsProvider; -import com.cloudconvert.dto.request.*; +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; +import com.cloudconvert.dto.request.UrlImportRequest; 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; @@ -62,7 +72,7 @@ public AbstractImportFilesResource( */ public abstract TRAR url( @NotNull final UrlImportRequest urlImportRequest - ) throws IOException, URISyntaxException; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; protected HttpUriRequest getUrlHttpUriRequest( @NotNull final UrlImportRequest urlImportRequest @@ -86,7 +96,7 @@ protected HttpUriRequest getUrlHttpUriRequest( */ public abstract TRAR upload( @NotNull final UploadImportRequest uploadImportRequest - ) throws IOException, URISyntaxException; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; /** * Create a task which uploads one input file. @@ -102,7 +112,7 @@ public abstract TRAR upload( */ public abstract TRAR upload( @NotNull final UploadImportRequest uploadImportRequest, @NotNull final File file - ) throws IOException, URISyntaxException; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; /** * Create a task which uploads one input file. @@ -118,7 +128,7 @@ public abstract TRAR upload( */ public abstract TRAR upload( @NotNull final TRAR taskResponseResult, @NotNull final File file - ) throws IOException, URISyntaxException; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; /** * Create a task which uploads one input file. @@ -135,7 +145,7 @@ public abstract TRAR upload( */ public abstract TRAR upload( @NotNull final String taskId, @NotNull final TaskResponse.Result.Form taskResponseResultForm, @NotNull final File file - ) throws IOException, URISyntaxException; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; /** * Create a task which uploads one input file. @@ -151,7 +161,7 @@ public abstract TRAR upload( */ public abstract TRAR upload( @NotNull final UploadImportRequest uploadImportRequest, @NotNull final InputStream inputStream - ) throws IOException, URISyntaxException; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; /** * Create a task which uploads one input file. @@ -168,7 +178,7 @@ public abstract TRAR upload( */ public abstract TRAR upload( @NotNull final UploadImportRequest uploadImportRequest, @NotNull final InputStream inputStream, @NotNull String filename - ) throws IOException, URISyntaxException; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; /** * Create a task which uploads one input file. @@ -184,7 +194,7 @@ public abstract TRAR upload( */ public abstract TRAR upload( @NotNull final TRAR taskResponseResult, @NotNull final InputStream inputStream - ) throws IOException, URISyntaxException; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; /** * Create a task which uploads one input file. @@ -201,7 +211,7 @@ public abstract TRAR upload( */ public abstract TRAR upload( @NotNull final TRAR taskResponseResult, @NotNull final InputStream inputStream, @NotNull final String filename - ) throws IOException, URISyntaxException; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; /** * Create a task which uploads one input file. @@ -218,7 +228,7 @@ public abstract TRAR upload( */ public abstract TRAR upload( @NotNull final String taskId, @NotNull final TaskResponse.Result.Form taskResponseResultForm, @NotNull final InputStream inputStream - ) throws IOException, URISyntaxException; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; /** * Create a task which uploads one input file. @@ -236,7 +246,7 @@ public abstract TRAR upload( */ 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; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; /** * Create a task to import files by downloading it from a S3 bucket. @@ -248,7 +258,7 @@ public abstract TRAR upload( */ public abstract TRAR s3( @NotNull final S3ImportRequest s3ImportRequest - ) throws IOException, URISyntaxException; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; protected HttpUriRequest getS3HttpUriRequest( @NotNull final S3ImportRequest s3ImportRequest @@ -269,7 +279,7 @@ protected HttpUriRequest getS3HttpUriRequest( */ public abstract TRAR azureBlob( @NotNull final AzureBlobImportRequest azureBlobImportRequest - ) throws IOException, URISyntaxException; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; protected HttpUriRequest getAzureBlobHttpUriRequest( @NotNull final AzureBlobImportRequest azureBlobImportRequest @@ -290,7 +300,7 @@ protected HttpUriRequest getAzureBlobHttpUriRequest( */ public abstract TRAR googleCloudStorage( @NotNull final GoogleCloudStorageImportRequest googleCloudStorageImportRequest - ) throws IOException, URISyntaxException; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; protected HttpUriRequest getGoogleCloudHttpUriRequest( @NotNull final GoogleCloudStorageImportRequest googleCloudStorageImportRequest @@ -311,7 +321,7 @@ protected HttpUriRequest getGoogleCloudHttpUriRequest( */ public abstract TRAR openStack( @NotNull final OpenStackImportRequest openStackImportRequest - ) throws IOException, URISyntaxException; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; protected HttpUriRequest getOpenStackHttpUriRequest( @NotNull final OpenStackImportRequest openStackImportRequest @@ -332,7 +342,7 @@ protected HttpUriRequest getOpenStackHttpUriRequest( */ public abstract TRAR sftp( @NotNull final SftpImportRequest sftpImportRequest - ) throws IOException, URISyntaxException; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; protected HttpUriRequest getSftpHttpUriRequest( @NotNull final SftpImportRequest sftpImportRequest @@ -353,7 +363,7 @@ protected HttpUriRequest getSftpHttpUriRequest( */ public abstract TRAR base64( @NotNull final Base64ImportRequest base64ImportRequest - ) throws IOException, URISyntaxException; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; protected HttpUriRequest getBase64HttpUriRequest( @NotNull final Base64ImportRequest base64ImportRequest @@ -374,7 +384,7 @@ protected HttpUriRequest getBase64HttpUriRequest( */ public abstract TRAR raw( @NotNull final RawImportRequest rawImportRequest - ) throws IOException, URISyntaxException; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; protected HttpUriRequest getRawHttpUriRequest( @NotNull final RawImportRequest rawImportRequest @@ -404,8 +414,7 @@ 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); diff --git a/src/main/java/com/cloudconvert/resource/AbstractJobsResource.java b/src/main/java/com/cloudconvert/resource/AbstractJobsResource.java index 99622b0..240437c 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,7 +139,7 @@ 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 @@ -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/AbstractTasksResource.java b/src/main/java/com/cloudconvert/resource/AbstractTasksResource.java index b9b1e3b..7de01f5 100644 --- a/src/main/java/com/cloudconvert/resource/AbstractTasksResource.java +++ b/src/main/java/com/cloudconvert/resource/AbstractTasksResource.java @@ -2,11 +2,21 @@ import com.cloudconvert.client.mapper.ObjectMapperProvider; import com.cloudconvert.client.setttings.SettingsProvider; -import com.cloudconvert.dto.request.*; +import com.cloudconvert.dto.request.CaptureWebsitesTaskRequest; +import com.cloudconvert.dto.request.ConvertFilesTaskRequest; +import com.cloudconvert.dto.request.CreateArchivesTaskRequest; +import com.cloudconvert.dto.request.CreateThumbnailsTaskRequest; +import com.cloudconvert.dto.request.ExecuteCommandsTaskRequest; +import com.cloudconvert.dto.request.GetMetadataTaskRequest; +import com.cloudconvert.dto.request.MergeFilesTaskRequest; +import com.cloudconvert.dto.request.OptimizeFilesTaskRequest; +import com.cloudconvert.dto.request.WriteMetadataTaskRequest; 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; @@ -108,7 +118,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. @@ -121,7 +131,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 @@ -149,7 +159,7 @@ 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 @@ -166,7 +176,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. @@ -181,7 +191,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. @@ -197,7 +207,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. @@ -216,7 +226,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 @@ -239,7 +249,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 @@ -259,7 +269,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 @@ -280,7 +290,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 @@ -297,7 +307,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. @@ -314,7 +324,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. @@ -332,7 +342,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. @@ -352,7 +362,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 @@ -375,7 +385,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. @@ -384,7 +394,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. @@ -400,7 +410,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. @@ -417,7 +427,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. @@ -436,7 +446,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. @@ -448,7 +458,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). @@ -460,7 +470,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. @@ -472,7 +482,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. @@ -484,7 +494,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. @@ -498,7 +508,7 @@ 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. @@ -509,8 +519,8 @@ public abstract TRAR command( * @throws URISyntaxException */ public abstract TRAR thumbnail( - @NotNull final CreateThumbnailsTaskRequest createThumbnailsTaskRequest - ) throws IOException, URISyntaxException; + @NotNull final CreateThumbnailsTaskRequest createThumbnailsTaskRequest + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; /** @@ -522,8 +532,8 @@ public abstract TRAR thumbnail( * @throws URISyntaxException */ public abstract TRAR metadata( - @NotNull final GetMetadataTaskRequest getMetadataTaskRequest - ) throws IOException, URISyntaxException; + @NotNull final GetMetadataTaskRequest getMetadataTaskRequest + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; /** @@ -535,8 +545,8 @@ public abstract TRAR metadata( * @throws URISyntaxException */ public abstract TRAR writeMetadata( - @NotNull final WriteMetadataTaskRequest writeMetadataTaskRequest - ) throws IOException, URISyntaxException; + @NotNull final WriteMetadataTaskRequest writeMetadataTaskRequest + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; @Override 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 index 3dae944..77bd797 100644 --- a/src/main/java/com/cloudconvert/resource/AbstractWriteMetadataResource.java +++ b/src/main/java/com/cloudconvert/resource/AbstractWriteMetadataResource.java @@ -5,6 +5,8 @@ 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; @@ -36,7 +38,7 @@ public AbstractWriteMetadataResource( */ public abstract TRAR writeMetadata( @NotNull final WriteMetadataTaskRequest writeMetadataTaskRequest - ) throws IOException, URISyntaxException; + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; protected HttpUriRequest getWriteMetadataHttpUriRequest( @NotNull final WriteMetadataTaskRequest writeMetadataTaskRequest diff --git a/src/main/java/com/cloudconvert/resource/async/AsyncImportFilesResource.java b/src/main/java/com/cloudconvert/resource/async/AsyncImportFilesResource.java index f3f550b..7472b53 100644 --- a/src/main/java/com/cloudconvert/resource/async/AsyncImportFilesResource.java +++ b/src/main/java/com/cloudconvert/resource/async/AsyncImportFilesResource.java @@ -2,14 +2,23 @@ import com.cloudconvert.client.mapper.ObjectMapperProvider; import com.cloudconvert.client.setttings.SettingsProvider; -import com.cloudconvert.dto.request.*; +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; +import com.cloudconvert.dto.request.UrlImportRequest; import com.cloudconvert.dto.response.TaskResponse; 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.cloudconvert.resource.AbstractResource; import com.google.common.collect.ImmutableList; import lombok.extern.slf4j.Slf4j; import org.apache.http.HttpEntity; @@ -26,8 +35,6 @@ import java.net.URISyntaxException; import java.util.concurrent.ExecutionException; -import static com.cloudconvert.resource.AbstractResource.*; - @Slf4j public class AsyncImportFilesResource extends AbstractImportFilesResource> { @@ -35,9 +42,9 @@ public class AsyncImportFilesResource extends AbstractImportFilesResource url( - @NotNull final UrlImportRequest urlImportRequest + @NotNull final UrlImportRequest urlImportRequest ) throws IOException, URISyntaxException { return asyncRequestExecutor.execute(getUrlHttpUriRequest(urlImportRequest), TASK_RESPONSE_TYPE_REFERENCE); } @Override public AsyncResult upload( - @NotNull final UploadImportRequest uploadImportRequest + @NotNull final UploadImportRequest uploadImportRequest ) throws IOException, URISyntaxException { final URI uri = getUri(ImmutableList.of(PATH_SEGMENT_IMPORT, PATH_SEGMENT_UPLOAD)); final HttpEntity httpEntity = getHttpEntity(uploadImportRequest); @@ -65,25 +72,24 @@ public AsyncResult upload( @Override public AsyncResult upload( - @NotNull final UploadImportRequest uploadImportRequest, @NotNull final File file - ) throws IOException, URISyntaxException { + @NotNull final UploadImportRequest uploadImportRequest, @NotNull final File file + ) 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); @@ -92,8 +98,8 @@ public AsyncResult upload( @Override public AsyncResult upload( - @NotNull final String taskId, @NotNull final TaskResponse.Result.Form taskResponseResultForm, @NotNull final File file - ) throws IOException, URISyntaxException { + @NotNull final String taskId, @NotNull final TaskResponse.Result.Form taskResponseResultForm, @NotNull final File file + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { try { final URI multipartUri = new URI(taskResponseResultForm.getUrl()); final HttpEntity multipartHttpEntity = getMultipartHttpEntity(taskResponseResultForm, file); @@ -107,30 +113,31 @@ public AsyncResult upload( @Override public AsyncResult upload( - @NotNull final UploadImportRequest uploadImportRequest, @NotNull final InputStream inputStream - ) throws IOException, URISyntaxException { + @NotNull final UploadImportRequest uploadImportRequest, @NotNull final InputStream inputStream + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return upload(upload(uploadImportRequest), inputStream); } @Override - public AsyncResult upload(@NotNull UploadImportRequest uploadImportRequest, @NotNull InputStream inputStream, @NotNull String filename) throws IOException, URISyntaxException { + public AsyncResult upload( + @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 { + @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); @@ -138,17 +145,18 @@ public AsyncResult upload( } @Override - public AsyncResult upload(@NotNull AsyncResult TaskResponseAsyncResult, @NotNull InputStream inputStream, @NotNull String filename) throws IOException, URISyntaxException { + public AsyncResult upload( + @NotNull AsyncResult taskResponseAsyncResult, @NotNull InputStream inputStream, @NotNull String filename + ) 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, filename); } 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); @@ -157,8 +165,8 @@ public AsyncResult upload(@NotNull AsyncResult TaskR @Override public AsyncResult 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 { try { final URI multipartUri = new URI(taskResponseResultForm.getUrl()); final HttpEntity multipartHttpEntity = getMultipartHttpEntity(taskResponseResultForm, inputStream); @@ -171,7 +179,9 @@ public AsyncResult upload( } @Override - public AsyncResult upload(@NotNull String taskId, TaskResponse.Result.@NotNull Form taskResponseResultForm, @NotNull InputStream inputStream, @NotNull String filename) throws IOException, URISyntaxException { + 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); @@ -184,62 +194,62 @@ public AsyncResult upload(@NotNull String taskId, TaskResponse.Res } private AsyncResult uploadPostProcess( - final String taskId, final AsyncResult multipartVoidAsyncResult - ) throws IOException, URISyntaxException, InterruptedException, ExecutionException { + final String taskId, final AsyncResult multipartVoidAsyncResult + ) 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(); } } @Override public AsyncResult s3( - @NotNull final S3ImportRequest s3ImportRequest + @NotNull final S3ImportRequest s3ImportRequest ) throws IOException, URISyntaxException { return asyncRequestExecutor.execute(getS3HttpUriRequest(s3ImportRequest), TASK_RESPONSE_TYPE_REFERENCE); } @Override public AsyncResult azureBlob( - @NotNull final AzureBlobImportRequest azureBlobImportRequest + @NotNull final AzureBlobImportRequest azureBlobImportRequest ) throws IOException, URISyntaxException { return asyncRequestExecutor.execute(getAzureBlobHttpUriRequest(azureBlobImportRequest), TASK_RESPONSE_TYPE_REFERENCE); } @Override public AsyncResult googleCloudStorage( - @NotNull final GoogleCloudStorageImportRequest googleCloudStorageImportRequest + @NotNull final GoogleCloudStorageImportRequest googleCloudStorageImportRequest ) throws IOException, URISyntaxException { return asyncRequestExecutor.execute(getGoogleCloudHttpUriRequest(googleCloudStorageImportRequest), TASK_RESPONSE_TYPE_REFERENCE); } @Override public AsyncResult openStack( - @NotNull final OpenStackImportRequest openStackImportRequest + @NotNull final OpenStackImportRequest openStackImportRequest ) throws IOException, URISyntaxException { return asyncRequestExecutor.execute(getOpenStackHttpUriRequest(openStackImportRequest), TASK_RESPONSE_TYPE_REFERENCE); } @Override public AsyncResult sftp( - @NotNull final SftpImportRequest sftpImportRequest + @NotNull final SftpImportRequest sftpImportRequest ) throws IOException, URISyntaxException { return asyncRequestExecutor.execute(getSftpHttpUriRequest(sftpImportRequest), TASK_RESPONSE_TYPE_REFERENCE); } diff --git a/src/main/java/com/cloudconvert/resource/async/AsyncTasksResource.java b/src/main/java/com/cloudconvert/resource/async/AsyncTasksResource.java index aa6c919..dfdff7d 100644 --- a/src/main/java/com/cloudconvert/resource/async/AsyncTasksResource.java +++ b/src/main/java/com/cloudconvert/resource/async/AsyncTasksResource.java @@ -2,11 +2,21 @@ import com.cloudconvert.client.mapper.ObjectMapperProvider; import com.cloudconvert.client.setttings.SettingsProvider; -import com.cloudconvert.dto.request.*; +import com.cloudconvert.dto.request.CaptureWebsitesTaskRequest; +import com.cloudconvert.dto.request.ConvertFilesTaskRequest; +import com.cloudconvert.dto.request.CreateArchivesTaskRequest; +import com.cloudconvert.dto.request.CreateThumbnailsTaskRequest; +import com.cloudconvert.dto.request.ExecuteCommandsTaskRequest; +import com.cloudconvert.dto.request.GetMetadataTaskRequest; +import com.cloudconvert.dto.request.MergeFilesTaskRequest; +import com.cloudconvert.dto.request.OptimizeFilesTaskRequest; +import com.cloudconvert.dto.request.WriteMetadataTaskRequest; 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; @@ -128,89 +138,89 @@ 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 { + @NotNull final CreateThumbnailsTaskRequest createThumbnailsTaskRequest + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return getAbstractCreateThumbnailsResource().thumbnail(createThumbnailsTaskRequest); } @Override public AsyncResult metadata( - @NotNull final GetMetadataTaskRequest getMetadataTaskRequest - ) throws IOException, URISyntaxException { + @NotNull final GetMetadataTaskRequest getMetadataTaskRequest + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return getAbstractGetMetadataResource().metadata(getMetadataTaskRequest); } @Override public AsyncResult writeMetadata( - @NotNull final WriteMetadataTaskRequest writeMetadataTaskRequest - ) throws IOException, URISyntaxException { + @NotNull final WriteMetadataTaskRequest writeMetadataTaskRequest + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return getAbstractWriteMetadataResource().writeMetadata(writeMetadataTaskRequest); } 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 includes - ) throws IOException, URISyntaxException { + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return convertFormats(filters, includes, null); } @Override public Result> convertFormats( @NotNull final Map filters, @NotNull final List includes, @Nullable final Boolean alternative - ) throws IOException, URISyntaxException { + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getConvertFormatsHttpUriRequest(filters, includes, alternative), OPERATION_RESPONSE_PAGEABLE_TYPE_REFERENCE); } diff --git a/src/main/java/com/cloudconvert/resource/sync/CreateArchivesResource.java b/src/main/java/com/cloudconvert/resource/sync/CreateArchivesResource.java index 8e6f871..655a857 100644 --- a/src/main/java/com/cloudconvert/resource/sync/CreateArchivesResource.java +++ b/src/main/java/com/cloudconvert/resource/sync/CreateArchivesResource.java @@ -5,6 +5,8 @@ import com.cloudconvert.dto.request.CreateArchivesTaskRequest; 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.AbstractCreateArchivesResource; import lombok.extern.slf4j.Slf4j; @@ -30,7 +32,7 @@ public CreateArchivesResource( @Override public Result archive( @NotNull final CreateArchivesTaskRequest createArchivesTaskRequest - ) throws IOException, URISyntaxException { + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getArchiveHttpUriRequest(createArchivesTaskRequest), TASK_RESPONSE_TYPE_REFERENCE); } diff --git a/src/main/java/com/cloudconvert/resource/sync/CreateThumbnailsResource.java b/src/main/java/com/cloudconvert/resource/sync/CreateThumbnailsResource.java index cb9297f..da55e5e 100644 --- a/src/main/java/com/cloudconvert/resource/sync/CreateThumbnailsResource.java +++ b/src/main/java/com/cloudconvert/resource/sync/CreateThumbnailsResource.java @@ -5,6 +5,8 @@ import com.cloudconvert.dto.request.CreateThumbnailsTaskRequest; 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.AbstractCreateThumbnailsResource; import lombok.extern.slf4j.Slf4j; @@ -30,7 +32,7 @@ public CreateThumbnailsResource( @Override public Result thumbnail( @NotNull final CreateThumbnailsTaskRequest createThumbnailsTaskRequest - ) throws IOException, URISyntaxException { + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getThumbnailHttpUriRequest(createThumbnailsTaskRequest), TASK_RESPONSE_TYPE_REFERENCE); } diff --git a/src/main/java/com/cloudconvert/resource/sync/ExecuteCommandsResource.java b/src/main/java/com/cloudconvert/resource/sync/ExecuteCommandsResource.java index 4fb54bb..af40850 100644 --- a/src/main/java/com/cloudconvert/resource/sync/ExecuteCommandsResource.java +++ b/src/main/java/com/cloudconvert/resource/sync/ExecuteCommandsResource.java @@ -5,6 +5,8 @@ import com.cloudconvert.dto.request.ExecuteCommandsTaskRequest; 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.AbstractExecuteCommandsResource; import com.google.common.collect.ImmutableList; @@ -34,7 +36,7 @@ public ExecuteCommandsResource( @Override public Result command( @NotNull final ExecuteCommandsTaskRequest executeCommandsTaskRequest - ) throws IOException, URISyntaxException { + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getCommandHttpUriRequest(executeCommandsTaskRequest), TASK_RESPONSE_TYPE_REFERENCE); } diff --git a/src/main/java/com/cloudconvert/resource/sync/ExportFilesResource.java b/src/main/java/com/cloudconvert/resource/sync/ExportFilesResource.java index f244033..b43fad2 100644 --- a/src/main/java/com/cloudconvert/resource/sync/ExportFilesResource.java +++ b/src/main/java/com/cloudconvert/resource/sync/ExportFilesResource.java @@ -10,6 +10,8 @@ import com.cloudconvert.dto.request.UrlExportRequest; 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.AbstractExportFilesResource; import lombok.extern.slf4j.Slf4j; @@ -35,42 +37,42 @@ public ExportFilesResource( @Override public Result url( @NotNull final UrlExportRequest urlExportRequest - ) throws IOException, URISyntaxException { + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getUrlHttpUriRequest(urlExportRequest), TASK_RESPONSE_TYPE_REFERENCE); } @Override public Result s3( @NotNull final S3ExportRequest s3ExportRequest - ) throws IOException, URISyntaxException { + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getS3HttpUriRequest(s3ExportRequest), TASK_RESPONSE_TYPE_REFERENCE); } @Override public Result azureBlob( @NotNull final AzureBlobExportRequest azureBlobExportRequest - ) throws IOException, URISyntaxException { + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getAzureBlobHttpUriRequest(azureBlobExportRequest), TASK_RESPONSE_TYPE_REFERENCE); } @Override public Result googleCloudStorage( @NotNull final GoogleCloudStorageExportRequest googleCloudStorageExportRequest - ) throws IOException, URISyntaxException { + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getGoogleCloudStorageHttpUriRequest(googleCloudStorageExportRequest), TASK_RESPONSE_TYPE_REFERENCE); } @Override public Result openStack( @NotNull final OpenStackExportRequest openStackExportRequest - ) throws IOException, URISyntaxException { + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getOpenStackStorageHttpUriRequest(openStackExportRequest), TASK_RESPONSE_TYPE_REFERENCE); } @Override public Result sftp( @NotNull final SftpExportRequest sftpExportRequest - ) throws IOException, URISyntaxException { + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getSftpStorageHttpUriRequest(sftpExportRequest), TASK_RESPONSE_TYPE_REFERENCE); } diff --git a/src/main/java/com/cloudconvert/resource/sync/FilesResource.java b/src/main/java/com/cloudconvert/resource/sync/FilesResource.java index d8c1e6b..8b90218 100644 --- a/src/main/java/com/cloudconvert/resource/sync/FilesResource.java +++ b/src/main/java/com/cloudconvert/resource/sync/FilesResource.java @@ -3,6 +3,8 @@ import com.cloudconvert.client.mapper.ObjectMapperProvider; import com.cloudconvert.client.setttings.SettingsProvider; 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.AbstractFilesResource; import lombok.extern.slf4j.Slf4j; @@ -29,7 +31,7 @@ public FilesResource( @Override public Result download( @NotNull final String path - ) throws IOException, URISyntaxException { + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getDownloadHttpUriRequest(path), INPUT_STREAM_TYPE_REFERENCE); } diff --git a/src/main/java/com/cloudconvert/resource/sync/GetMetadataResource.java b/src/main/java/com/cloudconvert/resource/sync/GetMetadataResource.java index 3bc9824..2b1c82d 100644 --- a/src/main/java/com/cloudconvert/resource/sync/GetMetadataResource.java +++ b/src/main/java/com/cloudconvert/resource/sync/GetMetadataResource.java @@ -5,6 +5,8 @@ import com.cloudconvert.dto.request.GetMetadataTaskRequest; 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.AbstractGetMetadataResource; import lombok.extern.slf4j.Slf4j; @@ -30,7 +32,7 @@ public GetMetadataResource( @Override public Result metadata( @NotNull final GetMetadataTaskRequest getMetadataTaskRequest - ) throws IOException, URISyntaxException { + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getMetadataHttpUriRequest(getMetadataTaskRequest), TASK_RESPONSE_TYPE_REFERENCE); } diff --git a/src/main/java/com/cloudconvert/resource/sync/ImportFilesResource.java b/src/main/java/com/cloudconvert/resource/sync/ImportFilesResource.java index e515157..05416fc 100644 --- a/src/main/java/com/cloudconvert/resource/sync/ImportFilesResource.java +++ b/src/main/java/com/cloudconvert/resource/sync/ImportFilesResource.java @@ -2,9 +2,19 @@ import com.cloudconvert.client.mapper.ObjectMapperProvider; import com.cloudconvert.client.setttings.SettingsProvider; -import com.cloudconvert.dto.request.*; +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; +import com.cloudconvert.dto.request.UrlImportRequest; 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.AbstractImportFilesResource; import com.google.common.collect.ImmutableList; @@ -29,9 +39,9 @@ public class ImportFilesResource extends AbstractImportFilesResource url( - @NotNull final UrlImportRequest urlImportRequest - ) throws IOException, URISyntaxException { + @NotNull final UrlImportRequest urlImportRequest + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getUrlHttpUriRequest(urlImportRequest), TASK_RESPONSE_TYPE_REFERENCE); } @Override public Result upload( - @NotNull final UploadImportRequest uploadImportRequest - ) throws IOException, URISyntaxException { + @NotNull final UploadImportRequest uploadImportRequest + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { final URI uri = getUri(ImmutableList.of(PATH_SEGMENT_IMPORT, PATH_SEGMENT_UPLOAD)); final HttpEntity httpEntity = getHttpEntity(uploadImportRequest); final HttpUriRequest httpUriRequest = getHttpUriRequest(HttpPost.class, uri, httpEntity); @@ -59,29 +69,28 @@ public Result upload( @Override public Result upload( - @NotNull final UploadImportRequest uploadImportRequest, @NotNull final File file - ) throws IOException, URISyntaxException { + @NotNull final UploadImportRequest uploadImportRequest, @NotNull final File file + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return upload(upload(uploadImportRequest), file); } @Override public Result upload( - @NotNull final Result TaskResponseResult, @NotNull final File file - ) throws IOException, URISyntaxException { - if (HttpStatus.SC_CREATED == TaskResponseResult.getStatus()) { - final TaskResponse taskResponse = TaskResponseResult.getBody(); + @NotNull final Result taskResponseResult, @NotNull final File file + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { + if (HttpStatus.SC_CREATED == taskResponseResult.getStatus().getCode()) { + final TaskResponse taskResponse = taskResponseResult.getBody(); return upload(taskResponse.getId(), taskResponse.getResult().getForm(), file); } else { - return Result.builder().status(TaskResponseResult.getStatus()).message(TaskResponseResult.getMessage()).build(); + return taskResponseResult; } } @Override public Result upload( - @NotNull final String taskId, @NotNull final TaskResponse.Result.Form taskResponseResultForm, @NotNull final File file - ) throws IOException, URISyntaxException { - + @NotNull final String taskId, @NotNull final TaskResponse.Result.Form taskResponseResultForm, @NotNull final File file + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { final URI multipartUri = new URI(taskResponseResultForm.getUrl()); final HttpEntity multipartHttpEntity = getMultipartHttpEntity(taskResponseResultForm, file); final HttpUriRequest multipartHttpUriRequest = getHttpUriRequest(HttpPost.class, multipartUri, multipartHttpEntity); @@ -90,43 +99,49 @@ public Result upload( } @Override - public Result upload(@NotNull UploadImportRequest uploadImportRequest, @NotNull InputStream inputStream) throws IOException, URISyntaxException { + public Result upload( + @NotNull UploadImportRequest uploadImportRequest, @NotNull InputStream inputStream + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return upload(upload(uploadImportRequest), inputStream); } @Override public Result upload( - @NotNull final UploadImportRequest uploadImportRequest, @NotNull final InputStream inputStream, @NotNull final String filename - ) throws IOException, URISyntaxException { + @NotNull final UploadImportRequest uploadImportRequest, @NotNull final InputStream inputStream, @NotNull final String filename + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return upload(upload(uploadImportRequest), inputStream, filename); } @Override - public Result upload(@NotNull Result TaskResponseResult, @NotNull InputStream inputStream) throws IOException, URISyntaxException { - if (HttpStatus.SC_CREATED == TaskResponseResult.getStatus()) { - final TaskResponse taskResponse = TaskResponseResult.getBody(); + public Result upload( + @NotNull Result taskResponseResult, @NotNull InputStream inputStream + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { + if (HttpStatus.SC_CREATED == taskResponseResult.getStatus().getCode()) { + final TaskResponse taskResponse = taskResponseResult.getBody(); return upload(taskResponse.getId(), taskResponse.getResult().getForm(), inputStream); } else { - return Result.builder().status(TaskResponseResult.getStatus()).message(TaskResponseResult.getMessage()).build(); + return taskResponseResult; } } @Override public Result upload( - @NotNull final Result TaskResponseResult, @NotNull final InputStream inputStream, @NotNull final String filename - ) throws IOException, URISyntaxException { - if (HttpStatus.SC_CREATED == TaskResponseResult.getStatus()) { - final TaskResponse taskResponse = TaskResponseResult.getBody(); + @NotNull final Result taskResponseResult, @NotNull final InputStream inputStream, @NotNull final String filename + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { + if (HttpStatus.SC_CREATED == taskResponseResult.getStatus().getCode()) { + final TaskResponse taskResponse = taskResponseResult.getBody(); return upload(taskResponse.getId(), taskResponse.getResult().getForm(), inputStream, filename); } else { - return Result.builder().status(TaskResponseResult.getStatus()).message(TaskResponseResult.getMessage()).build(); + return taskResponseResult; } } @Override - public Result upload(@NotNull String taskId, TaskResponse.Result.@NotNull Form taskResponseResultForm, @NotNull InputStream inputStream) throws IOException, URISyntaxException { + public Result upload( + @NotNull String taskId, TaskResponse.Result.@NotNull Form taskResponseResultForm, @NotNull InputStream inputStream + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { final URI multipartUri = new URI(taskResponseResultForm.getUrl()); final HttpEntity multipartHttpEntity = getMultipartHttpEntity(taskResponseResultForm, inputStream); final HttpUriRequest multipartHttpUriRequest = getHttpUriRequest(HttpPost.class, multipartUri, multipartHttpEntity); @@ -136,8 +151,8 @@ public Result upload(@NotNull String taskId, TaskResponse.Result.@ @Override public Result upload( - @NotNull final String taskId, @NotNull final TaskResponse.Result.Form taskResponseResultForm, @NotNull final InputStream inputStream, @NotNull final String filename - ) throws IOException, URISyntaxException { + @NotNull final String taskId, @NotNull final TaskResponse.Result.Form taskResponseResultForm, @NotNull final InputStream inputStream, @NotNull final String filename + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { final URI multipartUri = new URI(taskResponseResultForm.getUrl()); final HttpEntity multipartHttpEntity = getMultipartHttpEntity(taskResponseResultForm, filename, inputStream); final HttpUriRequest multipartHttpUriRequest = getHttpUriRequest(HttpPost.class, multipartUri, multipartHttpEntity); @@ -146,68 +161,72 @@ public Result upload( } private Result uploadPostProcess( - final String taskId, final Result multipartVoidResult - ) throws IOException, URISyntaxException { - if (HttpStatus.SC_CREATED == multipartVoidResult.getStatus()) { + final String taskId, final Result multipartVoidResult + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { + if (HttpStatus.SC_CREATED == multipartVoidResult.getStatus().getCode()) { return tasksResource.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 Result redirectVoidResult = requestExecutor.execute(redirectHttpUriRequest, VOID_TYPE_REFERENCE); - if (HttpStatus.SC_CREATED == redirectVoidResult.getStatus()) { + if (HttpStatus.SC_CREATED == redirectVoidResult.getStatus().getCode()) { return tasksResource.show(taskId); } else { - return Result.builder().status(redirectVoidResult.getStatus()).message(redirectVoidResult.getMessage()).build(); + return Result.builder().status(redirectVoidResult.getStatus()).headers(redirectVoidResult.getHeaders()).build(); } } else { - return Result.builder().status(multipartVoidResult.getStatus()).message(multipartVoidResult.getMessage()).build(); + return Result.builder().status(multipartVoidResult.getStatus()).headers(multipartVoidResult.getHeaders()).build(); } } @Override public Result s3( - @NotNull final S3ImportRequest s3ImportRequest - ) throws IOException, URISyntaxException { + @NotNull final S3ImportRequest s3ImportRequest + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getS3HttpUriRequest(s3ImportRequest), TASK_RESPONSE_TYPE_REFERENCE); } @Override public Result azureBlob( - @NotNull final AzureBlobImportRequest azureBlobImportRequest - ) throws IOException, URISyntaxException { + @NotNull final AzureBlobImportRequest azureBlobImportRequest + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getAzureBlobHttpUriRequest(azureBlobImportRequest), TASK_RESPONSE_TYPE_REFERENCE); } @Override public Result googleCloudStorage( - @NotNull final GoogleCloudStorageImportRequest googleCloudStorageImportRequest - ) throws IOException, URISyntaxException { + @NotNull final GoogleCloudStorageImportRequest googleCloudStorageImportRequest + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getGoogleCloudHttpUriRequest(googleCloudStorageImportRequest), TASK_RESPONSE_TYPE_REFERENCE); } @Override public Result openStack( - @NotNull final OpenStackImportRequest openStackImportRequest - ) throws IOException, URISyntaxException { + @NotNull final OpenStackImportRequest openStackImportRequest + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getOpenStackHttpUriRequest(openStackImportRequest), TASK_RESPONSE_TYPE_REFERENCE); } @Override public Result sftp( - @NotNull final SftpImportRequest sftpImportRequest - ) throws IOException, URISyntaxException { + @NotNull final SftpImportRequest sftpImportRequest + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getSftpHttpUriRequest(sftpImportRequest), TASK_RESPONSE_TYPE_REFERENCE); } @Override - public Result base64(@NotNull Base64ImportRequest base64ImportRequest) throws IOException, URISyntaxException { + public Result base64( + @NotNull Base64ImportRequest base64ImportRequest + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getBase64HttpUriRequest(base64ImportRequest), TASK_RESPONSE_TYPE_REFERENCE); } @Override - public Result raw(@NotNull RawImportRequest rawImportRequest) throws IOException, URISyntaxException { + public Result raw( + @NotNull RawImportRequest rawImportRequest + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getRawHttpUriRequest(rawImportRequest), TASK_RESPONSE_TYPE_REFERENCE); } diff --git a/src/main/java/com/cloudconvert/resource/sync/JobsResource.java b/src/main/java/com/cloudconvert/resource/sync/JobsResource.java index 2cbe4f9..5ed889d 100644 --- a/src/main/java/com/cloudconvert/resource/sync/JobsResource.java +++ b/src/main/java/com/cloudconvert/resource/sync/JobsResource.java @@ -6,6 +6,8 @@ import com.cloudconvert.dto.response.JobResponse; import com.cloudconvert.dto.response.Pageable; 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.AbstractJobsResource; import com.cloudconvert.resource.params.Filter; @@ -40,61 +42,61 @@ public JobsResource( @Override public Result create( @NotNull final Map tasks - ) throws IOException, URISyntaxException { + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return create(tasks, ""); } @Override public Result create( @NotNull final Map tasks, @NotNull final String tag - ) throws IOException, URISyntaxException { + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getCreateHttpUriRequest(tasks, tag), JOB_RESPONSE_TYPE_REFERENCE); } @Override public Result show( @NotNull final String jobId - ) throws IOException, URISyntaxException { + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getShowHttpUriRequest(jobId), JOB_RESPONSE_TYPE_REFERENCE); } @Override public Result wait( @NotNull final String jobId - ) throws IOException, URISyntaxException { + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getWaitHttpUriRequest(jobId), JOB_RESPONSE_TYPE_REFERENCE); } @Override - public Result> list() throws IOException, URISyntaxException { + public Result> list() throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return list(ImmutableMap.of()); } @Override public Result> list( @NotNull final Map filters - ) throws IOException, URISyntaxException { + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return list(filters, ImmutableList.of()); } @Override public Result> list( @NotNull final Map filters, @NotNull final List includes - ) throws IOException, URISyntaxException { + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return list(filters, includes, null); } @Override public Result> list( @NotNull final Map filters, @NotNull final List includes, @Nullable final Pagination pagination - ) throws IOException, URISyntaxException { + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getListHttpUriRequest(filters, includes, pagination), JOB_RESPONSE_PAGEABLE_TYPE_REFERENCE); } @Override public Result delete( @NotNull final String jobId - ) throws IOException, URISyntaxException { + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getDeleteHttpUriRequest(jobId), VOID_TYPE_REFERENCE); } diff --git a/src/main/java/com/cloudconvert/resource/sync/MergeFilesResource.java b/src/main/java/com/cloudconvert/resource/sync/MergeFilesResource.java index 61e55e2..f080226 100644 --- a/src/main/java/com/cloudconvert/resource/sync/MergeFilesResource.java +++ b/src/main/java/com/cloudconvert/resource/sync/MergeFilesResource.java @@ -5,6 +5,8 @@ import com.cloudconvert.dto.request.MergeFilesTaskRequest; 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.AbstractMergeFilesResource; import lombok.extern.slf4j.Slf4j; @@ -30,7 +32,7 @@ public MergeFilesResource( @Override public Result merge( @NotNull final MergeFilesTaskRequest mergeFilesTaskRequest - ) throws IOException, URISyntaxException { + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getMergeHttpUriRequest(mergeFilesTaskRequest), TASK_RESPONSE_TYPE_REFERENCE); } diff --git a/src/main/java/com/cloudconvert/resource/sync/OptimizeFilesResource.java b/src/main/java/com/cloudconvert/resource/sync/OptimizeFilesResource.java index 113fb3c..e9ad404 100644 --- a/src/main/java/com/cloudconvert/resource/sync/OptimizeFilesResource.java +++ b/src/main/java/com/cloudconvert/resource/sync/OptimizeFilesResource.java @@ -5,6 +5,8 @@ import com.cloudconvert.dto.request.OptimizeFilesTaskRequest; 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.AbstractOptimizeFilesResource; import lombok.extern.slf4j.Slf4j; @@ -30,7 +32,7 @@ public OptimizeFilesResource( @Override public Result optimize( @NotNull final OptimizeFilesTaskRequest optimizeFilesTaskRequest - ) throws IOException, URISyntaxException { + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getOptimizeHttpUriRequest(optimizeFilesTaskRequest), TASK_RESPONSE_TYPE_REFERENCE); } diff --git a/src/main/java/com/cloudconvert/resource/sync/TasksResource.java b/src/main/java/com/cloudconvert/resource/sync/TasksResource.java index 131d35b..a6c1aeb 100644 --- a/src/main/java/com/cloudconvert/resource/sync/TasksResource.java +++ b/src/main/java/com/cloudconvert/resource/sync/TasksResource.java @@ -2,11 +2,21 @@ import com.cloudconvert.client.mapper.ObjectMapperProvider; import com.cloudconvert.client.setttings.SettingsProvider; -import com.cloudconvert.dto.request.*; +import com.cloudconvert.dto.request.CaptureWebsitesTaskRequest; +import com.cloudconvert.dto.request.ConvertFilesTaskRequest; +import com.cloudconvert.dto.request.CreateArchivesTaskRequest; +import com.cloudconvert.dto.request.CreateThumbnailsTaskRequest; +import com.cloudconvert.dto.request.ExecuteCommandsTaskRequest; +import com.cloudconvert.dto.request.GetMetadataTaskRequest; +import com.cloudconvert.dto.request.MergeFilesTaskRequest; +import com.cloudconvert.dto.request.OptimizeFilesTaskRequest; +import com.cloudconvert.dto.request.WriteMetadataTaskRequest; import com.cloudconvert.dto.response.OperationResponse; 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.AbstractTasksResource; import com.cloudconvert.resource.params.Filter; @@ -19,199 +29,196 @@ import org.jetbrains.annotations.Nullable; import java.io.IOException; -import java.net.URI; import java.net.URISyntaxException; import java.util.List; import java.util.Map; @Slf4j public class TasksResource extends AbstractTasksResource, - Result>, Result, Result>> { + Result>, Result, Result>> { private final RequestExecutor requestExecutor; public TasksResource( - final SettingsProvider settingsProvider, - final ObjectMapperProvider objectMapperProvider, final RequestExecutor requestExecutor, - final ConvertFilesResource convertFilesResource, final OptimizeFilesResource optimizeFilesResource, - final CaptureWebsitesResource captureWebsitesResource, final MergeFilesResource mergeFilesResource, - final CreateArchivesResource createArchivesResource, final ExecuteCommandsResource executeCommandsResource, - final CreateThumbnailsResource createThumbnailsResource, final GetMetadataResource getMetadataResource, - final WriteMetadataResource writeMetadataResource + final SettingsProvider settingsProvider, + final ObjectMapperProvider objectMapperProvider, final RequestExecutor requestExecutor, + final ConvertFilesResource convertFilesResource, final OptimizeFilesResource optimizeFilesResource, + final CaptureWebsitesResource captureWebsitesResource, final MergeFilesResource mergeFilesResource, + final CreateArchivesResource createArchivesResource, final ExecuteCommandsResource executeCommandsResource, + final CreateThumbnailsResource createThumbnailsResource, final GetMetadataResource getMetadataResource, + final WriteMetadataResource writeMetadataResource ) { super(settingsProvider, objectMapperProvider, convertFilesResource, optimizeFilesResource, captureWebsitesResource, - mergeFilesResource, createArchivesResource, executeCommandsResource, createThumbnailsResource, getMetadataResource, writeMetadataResource); + mergeFilesResource, createArchivesResource, executeCommandsResource, createThumbnailsResource, getMetadataResource, writeMetadataResource); this.requestExecutor = requestExecutor; } public Result show( - @NotNull final String taskId - ) throws IOException, URISyntaxException { + @NotNull final String taskId + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return show(taskId, ImmutableList.of()); } public Result show( - @NotNull final String taskId, @NotNull final List includes - ) throws IOException, URISyntaxException { + @NotNull final String taskId, @NotNull final List includes + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getShowHttpUriRequest(taskId, includes), TASK_RESPONSE_TYPE_REFERENCE); } public Result wait( - @NotNull final String taskId - ) throws IOException, URISyntaxException { - final URI uri = getUri(ImmutableList.of(PATH_SEGMENT_TASKS, taskId, PATH_SEGMENT_WAIT)); - + @NotNull final String taskId + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getWaitHttpUriRequest(taskId), TASK_RESPONSE_TYPE_REFERENCE); } - public Result> list() throws IOException, URISyntaxException { + public Result> list() throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return list(ImmutableMap.of()); } public Result> list( - @NotNull final Map filters - ) throws IOException, URISyntaxException { + @NotNull final Map filters + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return list(filters, ImmutableList.of()); } @Override public Result> list( - @NotNull final Map filters, @NotNull final List includes - ) throws IOException, URISyntaxException { + @NotNull final Map filters, @NotNull final List includes + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return list(filters, includes, null); } @Override public Result> list( - @NotNull final Map filters, @NotNull final List includes, @Nullable final Pagination pagination - ) throws IOException, URISyntaxException { + @NotNull final Map filters, @NotNull final List includes, @Nullable final Pagination pagination + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getListHttpUriRequest(filters, includes, pagination), TASK_RESPONSE_PAGEABLE_TYPE_REFERENCE); } public Result cancel( - @NotNull final String taskId - ) throws IOException, URISyntaxException { + @NotNull final String taskId + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getCancelHttpUriRequest(taskId), TASK_RESPONSE_TYPE_REFERENCE); } public Result retry( - @NotNull final String taskId - ) throws IOException, URISyntaxException { + @NotNull final String taskId + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getRetryHttpUriRequest(taskId), TASK_RESPONSE_TYPE_REFERENCE); } public Result delete( - @NotNull final String taskId - ) throws IOException, URISyntaxException { + @NotNull final String taskId + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getDeleteHttpUriRequest(taskId), VOID_TYPE_REFERENCE); } - public Result> operations() throws IOException, URISyntaxException { + public Result> operations() throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return operations(ImmutableMap.of()); } public Result> operations( - @NotNull final Map filters - ) throws IOException, URISyntaxException { + @NotNull final Map filters + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return operations(filters, ImmutableList.of()); } public Result> operations( - @NotNull final Map filters, @NotNull final List includes - ) throws IOException, URISyntaxException { + @NotNull final Map filters, @NotNull final List includes + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return operations(filters, includes, null); } public Result> operations( - @NotNull final Map filters, @NotNull final List includes, @Nullable final Boolean alternative - ) throws IOException, URISyntaxException { + @NotNull final Map filters, @NotNull final List includes, @Nullable final Boolean alternative + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getOperationsHttpUriRequest(filters, includes, alternative), OPERATION_RESPONSE_PAGEABLE_TYPE_REFERENCE); } @Override public Result convert( - @NotNull final ConvertFilesTaskRequest convertFilesTaskRequest - ) throws IOException, URISyntaxException { + @NotNull final ConvertFilesTaskRequest convertFilesTaskRequest + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return getAbstractConvertFilesResource().convert(convertFilesTaskRequest); } @Override - public Result> convertFormats() throws IOException, URISyntaxException { + public Result> convertFormats() throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return getAbstractConvertFilesResource().convertFormats(); } @Override public Result> convertFormats( - @NotNull final Map filters - ) throws IOException, URISyntaxException { + @NotNull final Map filters + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return getAbstractConvertFilesResource().convertFormats(filters); } @Override public Result> convertFormats( - @NotNull final Map filters, @NotNull final List includes - ) throws IOException, URISyntaxException { + @NotNull final Map filters, @NotNull final List includes + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return getAbstractConvertFilesResource().convertFormats(filters, includes); } @Override public Result> convertFormats( - @NotNull final Map filters, @NotNull final List includes, @Nullable final Boolean alternative - ) throws IOException, URISyntaxException { + @NotNull final Map filters, @NotNull final List includes, @Nullable final Boolean alternative + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return getAbstractConvertFilesResource().convertFormats(filters, includes, alternative); } @Override public Result optimize( - @NotNull final OptimizeFilesTaskRequest optimizeFilesTaskRequest - ) throws IOException, URISyntaxException { + @NotNull final OptimizeFilesTaskRequest optimizeFilesTaskRequest + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return getAbstractOptimizeFilesResource().optimize(optimizeFilesTaskRequest); } @Override public Result capture( - @NotNull final CaptureWebsitesTaskRequest captureWebsitesTaskRequest - ) throws IOException, URISyntaxException { + @NotNull final CaptureWebsitesTaskRequest captureWebsitesTaskRequest + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return getAbstractCaptureWebsitesResource().capture(captureWebsitesTaskRequest); } @Override public Result merge( - @NotNull final MergeFilesTaskRequest mergeFilesTaskRequest - ) throws IOException, URISyntaxException { + @NotNull final MergeFilesTaskRequest mergeFilesTaskRequest + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return getAbstractMergeFilesResource().merge(mergeFilesTaskRequest); } @Override public Result archive( - @NotNull final CreateArchivesTaskRequest createArchivesTaskRequest - ) throws IOException, URISyntaxException { + @NotNull final CreateArchivesTaskRequest createArchivesTaskRequest + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return getAbstractCreateArchivesResource().archive(createArchivesTaskRequest); } @Override public Result command( - @NotNull final ExecuteCommandsTaskRequest executeCommandsTaskRequest - ) throws IOException, URISyntaxException { + @NotNull final ExecuteCommandsTaskRequest executeCommandsTaskRequest + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return getAbstractExecuteCommandsResource().command(executeCommandsTaskRequest); } @Override public Result thumbnail(@NotNull CreateThumbnailsTaskRequest createThumbnailsTaskRequest - ) throws IOException, URISyntaxException { + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return getAbstractCreateThumbnailsResource().thumbnail(createThumbnailsTaskRequest); } @Override public Result metadata(@NotNull GetMetadataTaskRequest getMetadataTaskRequest - ) throws IOException, URISyntaxException { + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return getAbstractGetMetadataResource().metadata(getMetadataTaskRequest); } @Override public Result writeMetadata(@NotNull WriteMetadataTaskRequest writeMetadataTaskRequest - ) throws IOException, URISyntaxException { + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return getAbstractWriteMetadataResource().writeMetadata(writeMetadataTaskRequest); } diff --git a/src/main/java/com/cloudconvert/resource/sync/UsersResource.java b/src/main/java/com/cloudconvert/resource/sync/UsersResource.java index 0901da1..608b94e 100644 --- a/src/main/java/com/cloudconvert/resource/sync/UsersResource.java +++ b/src/main/java/com/cloudconvert/resource/sync/UsersResource.java @@ -4,6 +4,8 @@ import com.cloudconvert.client.setttings.SettingsProvider; import com.cloudconvert.dto.response.UserResponse; 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.AbstractUsersResource; import lombok.extern.slf4j.Slf4j; @@ -26,7 +28,7 @@ public UsersResource( } @Override - public Result me() throws IOException, URISyntaxException { + public Result me() throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getMeHttpUriRequest(), USER_RESPONSE_TYPE_REFERENCE); } diff --git a/src/main/java/com/cloudconvert/resource/sync/WebhookResource.java b/src/main/java/com/cloudconvert/resource/sync/WebhookResource.java index 101e581..8f149fb 100644 --- a/src/main/java/com/cloudconvert/resource/sync/WebhookResource.java +++ b/src/main/java/com/cloudconvert/resource/sync/WebhookResource.java @@ -6,6 +6,8 @@ import com.cloudconvert.dto.response.Pageable; import com.cloudconvert.dto.response.WebhookResponse; 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.AbstractWebhooksResource; import com.cloudconvert.resource.params.Filter; @@ -35,33 +37,33 @@ public WebhookResource( @Override public Result create( @NotNull final WebhookRequest webhookRequest - ) throws IOException, URISyntaxException { + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getCreateHttpUriRequest(webhookRequest), WEBHOOKS_RESPONSE_TYPE_REFERENCE); } @Override - public Result> list() throws IOException, URISyntaxException { + public Result> list() throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return list(ImmutableMap.of()); } @Override public Result> list( @NotNull final Map filters - ) throws IOException, URISyntaxException { + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return list(filters, null); } @Override public Result> list( @NotNull final Map filters, @Nullable final Pagination pagination - ) throws IOException, URISyntaxException { + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getListHttpUriRequest(filters, pagination), WEBHOOKS_RESPONSE_PAGEABLE_TYPE_REFERENCE); } @Override public Result delete( @NotNull final String webhookId - ) throws IOException, URISyntaxException { + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getDeleteHttpUriRequest(webhookId), VOID_TYPE_REFERENCE); } diff --git a/src/main/java/com/cloudconvert/resource/sync/WriteMetadataResource.java b/src/main/java/com/cloudconvert/resource/sync/WriteMetadataResource.java index c5efcd3..c2a7fc0 100644 --- a/src/main/java/com/cloudconvert/resource/sync/WriteMetadataResource.java +++ b/src/main/java/com/cloudconvert/resource/sync/WriteMetadataResource.java @@ -5,6 +5,8 @@ import com.cloudconvert.dto.request.WriteMetadataTaskRequest; 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.AbstractWriteMetadataResource; import lombok.extern.slf4j.Slf4j; @@ -30,7 +32,7 @@ public WriteMetadataResource( @Override public Result writeMetadata( @NotNull final WriteMetadataTaskRequest getMetadataTaskRequest - ) throws IOException, URISyntaxException { + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { return requestExecutor.execute(getWriteMetadataHttpUriRequest(getMetadataTaskRequest), TASK_RESPONSE_TYPE_REFERENCE); } diff --git a/src/test/java/com/cloudconvert/test/integration/AsyncCloudConvertClientExceptionTest.java b/src/test/java/com/cloudconvert/test/integration/AsyncCloudConvertClientExceptionTest.java new file mode 100644 index 0000000..c1917ad --- /dev/null +++ b/src/test/java/com/cloudconvert/test/integration/AsyncCloudConvertClientExceptionTest.java @@ -0,0 +1,73 @@ +package com.cloudconvert.test.integration; + +import com.cloudconvert.client.AsyncCloudConvertClient; +import com.cloudconvert.client.setttings.PropertyFileSettingsProvider; +import com.cloudconvert.dto.request.UploadImportRequest; +import com.cloudconvert.exception.CloudConvertClientException; +import com.cloudconvert.test.framework.AbstractTest; +import com.cloudconvert.test.framework.IntegrationTest; +import com.google.common.collect.ImmutableMap; +import org.apache.http.HttpStatus; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.experimental.categories.Category; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +import java.io.InputStream; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.catchThrowableOfType; + +@Category(IntegrationTest.class) +@RunWith(JUnit4.class) +public class AsyncCloudConvertClientExceptionTest extends AbstractTest { + + private static final String JPG_TEST_FILE_1 = "image-test-file-1.jpg"; + + private AsyncCloudConvertClient asyncCloudConvertUnauthorizedClient; + private AsyncCloudConvertClient asyncCloudConvertAuthorizedClient; + + private InputStream jpgTest1InputStream; + + @Before + public void before() throws Exception { + asyncCloudConvertUnauthorizedClient = new AsyncCloudConvertClient(new PropertyFileSettingsProvider("invalid-application.properties")); + asyncCloudConvertAuthorizedClient = new AsyncCloudConvertClient(new PropertyFileSettingsProvider("application.properties")); + + jpgTest1InputStream = AsyncCloudConvertClientExceptionTest.class.getClassLoader().getResourceAsStream(JPG_TEST_FILE_1); + } + + @Test(timeout = TIMEOUT) + public void unauthorized() throws Exception { + final CloudConvertClientException cloudConvertClientException = catchThrowableOfType( + () -> asyncCloudConvertUnauthorizedClient.importUsing().upload(new UploadImportRequest(), jpgTest1InputStream).get(), CloudConvertClientException.class); + + assertThat(cloudConvertClientException.getStatus().getCode()).isEqualTo(HttpStatus.SC_UNAUTHORIZED); + assertThat(cloudConvertClientException.getStatus().getReason()).isEqualTo("Unauthorized"); + assertThat(cloudConvertClientException.getHeaders()).hasSize(6); + assertThat(cloudConvertClientException.getBody().getCode()).isEqualTo("UNAUTHENTICATED"); + assertThat(cloudConvertClientException.getBody().getMessage()).isEqualTo("Unauthenticated."); + } + + @Test(timeout = TIMEOUT) + public void unprocessableEntity() throws Exception { + final CloudConvertClientException cloudConvertClientException = catchThrowableOfType( + () -> asyncCloudConvertAuthorizedClient.jobs().create(ImmutableMap.of()).get(), CloudConvertClientException.class); + + assertThat(cloudConvertClientException.getStatus().getCode()).isEqualTo(HttpStatus.SC_UNPROCESSABLE_ENTITY); + assertThat(cloudConvertClientException.getStatus().getReason()).isEqualTo("Unprocessable Entity"); + assertThat(cloudConvertClientException.getHeaders()).hasSize(8); + assertThat(cloudConvertClientException.getBody().getCode()).isEqualTo("INVALID_DATA"); + assertThat(cloudConvertClientException.getBody().getMessage()).isEqualTo("The given data was invalid."); + assertThat(cloudConvertClientException.getBody().getErrors()).hasSize(1); + } + + @After + public void after() throws Exception { + jpgTest1InputStream.close(); + asyncCloudConvertUnauthorizedClient.close(); + asyncCloudConvertAuthorizedClient.close(); + } +} diff --git a/src/test/java/com/cloudconvert/test/integration/AsyncImportsAndExportsIntegrationTest.java b/src/test/java/com/cloudconvert/test/integration/AsyncImportsAndExportsIntegrationTest.java index 06da4dd..c3cd930 100644 --- a/src/test/java/com/cloudconvert/test/integration/AsyncImportsAndExportsIntegrationTest.java +++ b/src/test/java/com/cloudconvert/test/integration/AsyncImportsAndExportsIntegrationTest.java @@ -3,7 +3,21 @@ import com.cloudconvert.client.AsyncCloudConvertClient; import com.cloudconvert.dto.Operation; import com.cloudconvert.dto.Status; -import com.cloudconvert.dto.request.*; +import com.cloudconvert.dto.request.AzureBlobExportRequest; +import com.cloudconvert.dto.request.AzureBlobImportRequest; +import com.cloudconvert.dto.request.Base64ImportRequest; +import com.cloudconvert.dto.request.GoogleCloudStorageExportRequest; +import com.cloudconvert.dto.request.GoogleCloudStorageImportRequest; +import com.cloudconvert.dto.request.OpenStackExportRequest; +import com.cloudconvert.dto.request.OpenStackImportRequest; +import com.cloudconvert.dto.request.RawImportRequest; +import com.cloudconvert.dto.request.S3ExportRequest; +import com.cloudconvert.dto.request.S3ImportRequest; +import com.cloudconvert.dto.request.SftpExportRequest; +import com.cloudconvert.dto.request.SftpImportRequest; +import com.cloudconvert.dto.request.UploadImportRequest; +import com.cloudconvert.dto.request.UrlExportRequest; +import com.cloudconvert.dto.request.UrlImportRequest; import com.cloudconvert.dto.response.TaskResponse; import com.cloudconvert.dto.result.AsyncResult; import com.cloudconvert.dto.result.Result; @@ -52,7 +66,7 @@ public void before() throws Exception { public void cancelAndRetryUploadImportTaskLifecycle() throws Exception { // Import upload (not immediate upload) final Result uploadImportTaskResponseResult = asyncCloudConvertClient.importUsing().upload(new UploadImportRequest()).get(); - assertThat(uploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(uploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse uploadImportTaskResponse = uploadImportTaskResponseResult.getBody(); assertThat(uploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); @@ -60,7 +74,7 @@ public void cancelAndRetryUploadImportTaskLifecycle() throws Exception { // Cancel final Result cancelUploadImportTaskResponseResult = asyncCloudConvertClient.tasks().cancel(uploadImportTaskResponse.getId()).get(); - assertThat(cancelUploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(cancelUploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse cancelUploadImportTaskResponse = cancelUploadImportTaskResponseResult.getBody(); assertThat(cancelUploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); @@ -72,7 +86,7 @@ public void cancelAndRetryUploadImportTaskLifecycle() throws Exception { final AsyncResult retryUploadImportTaskResponseAsyncResult = asyncCloudConvertClient.tasks().retry(uploadImportTaskResponse.getId()); final Result retryUploadImportTaskResponseResult = retryUploadImportTaskResponseAsyncResult.get(); - assertThat(retryUploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(retryUploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse retryUploadImportTaskResponse = retryUploadImportTaskResponseResult.getBody(); assertThat(retryUploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); @@ -81,14 +95,14 @@ public void cancelAndRetryUploadImportTaskLifecycle() throws Exception { // Upload (actual upload) final Result uploadTaskResponseResult = asyncCloudConvertClient.importUsing() .upload(retryUploadImportTaskResponseAsyncResult, jpgTest1InputStream).get(); - assertThat(uploadTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(uploadTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse uploadTaskResponse = uploadTaskResponseResult.getBody(); assertThat(uploadTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); // Wait import upload final Result waitRetryUploadImportTaskResponseResult = asyncCloudConvertClient.tasks().wait(retryUploadImportTaskResponse.getId()).get(); - assertThat(waitRetryUploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(waitRetryUploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse waitRetryUploadImportTaskResponse = waitRetryUploadImportTaskResponseResult.getBody(); assertThat(waitRetryUploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); @@ -100,14 +114,14 @@ public void cancelAndRetryUploadImportTaskLifecycle() throws Exception { public void uploadImportInputStreamAndExportUrlTaskLifecycle() throws Exception { // Import upload (immediate upload) final Result uploadImportTaskResponseResult = asyncCloudConvertClient.importUsing().upload(new UploadImportRequest(), jpgTest1InputStream).get(); - assertThat(uploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(uploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse uploadImportTaskResponse = uploadImportTaskResponseResult.getBody(); assertThat(uploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); // Wait import upload final Result waitUploadImportTaskResponseResult = asyncCloudConvertClient.tasks().wait(uploadImportTaskResponse.getId()).get(); - assertThat(waitUploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(waitUploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse waitUploadImportTaskResponse = waitUploadImportTaskResponseResult.getBody(); assertThat(waitUploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); @@ -116,14 +130,14 @@ public void uploadImportInputStreamAndExportUrlTaskLifecycle() throws Exception // Export url final UrlExportRequest urlExportRequest = new UrlExportRequest().setInput(uploadImportTaskResponse.getId()); final Result urlExportTaskResponseResult = asyncCloudConvertClient.exportUsing().url(urlExportRequest).get(); - assertThat(urlExportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(urlExportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse urlExportTaskResponse = urlExportTaskResponseResult.getBody(); assertThat(urlExportTaskResponse.getOperation()).isEqualTo(Operation.EXPORT_URL); // Wait export url final Result waitUrlExportTaskResponseResult = asyncCloudConvertClient.tasks().wait(urlExportTaskResponse.getId()).get(); - assertThat(waitUploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(waitUploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse waitUrlExportTaskResponse = waitUrlExportTaskResponseResult.getBody(); assertThat(waitUrlExportTaskResponse.getOperation()).isEqualTo(Operation.EXPORT_URL); @@ -132,7 +146,7 @@ public void uploadImportInputStreamAndExportUrlTaskLifecycle() throws Exception // Download file final Result inputStreamResult = asyncCloudConvertClient.files().download(waitUrlExportTaskResponse.getResult().getFiles().get(0).get("url")).get(); - assertThat(inputStreamResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(inputStreamResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); assertThat(MimeTypes.getDefaultMimeTypes().forName(tika.detect(inputStreamResult.getBody())).getName()).isEqualTo("image/jpeg"); } @@ -140,14 +154,14 @@ public void uploadImportInputStreamAndExportUrlTaskLifecycle() throws Exception public void uploadImportFileAndExportUrlTaskLifecycle() throws Exception { // Import upload (immediate upload) final Result uploadImportTaskResponseResult = asyncCloudConvertClient.importUsing().upload(new UploadImportRequest(), jpgTest1File).get(); - assertThat(uploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(uploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse uploadImportTaskResponse = uploadImportTaskResponseResult.getBody(); assertThat(uploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); // Wait import upload final Result waitUploadImportTaskResponseResult = asyncCloudConvertClient.tasks().wait(uploadImportTaskResponse.getId()).get(); - assertThat(waitUploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(waitUploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse waitUploadImportTaskResponse = waitUploadImportTaskResponseResult.getBody(); assertThat(waitUploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); @@ -156,14 +170,14 @@ public void uploadImportFileAndExportUrlTaskLifecycle() throws Exception { // Export url final UrlExportRequest urlExportRequest = new UrlExportRequest().setInput(uploadImportTaskResponse.getId()); final Result urlExportTaskResponseResult = asyncCloudConvertClient.exportUsing().url(urlExportRequest).get(); - assertThat(urlExportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(urlExportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse urlExportTaskResponse = urlExportTaskResponseResult.getBody(); assertThat(urlExportTaskResponse.getOperation()).isEqualTo(Operation.EXPORT_URL); // Wait export url final Result waitUrlExportTaskResponseResult = asyncCloudConvertClient.tasks().wait(urlExportTaskResponse.getId()).get(); - assertThat(waitUploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(waitUploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse waitUrlExportTaskResponse = waitUrlExportTaskResponseResult.getBody(); assertThat(waitUrlExportTaskResponse.getOperation()).isEqualTo(Operation.EXPORT_URL); @@ -172,7 +186,7 @@ public void uploadImportFileAndExportUrlTaskLifecycle() throws Exception { // Download file final Result inputStreamResult = asyncCloudConvertClient.files().download(waitUrlExportTaskResponse.getResult().getFiles().get(0).get("url")).get(); - assertThat(inputStreamResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(inputStreamResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); assertThat(MimeTypes.getDefaultMimeTypes().forName(tika.detect(inputStreamResult.getBody())).getName()).isEqualTo("image/jpeg"); } @@ -185,7 +199,7 @@ public void importTasksCreation() throws Exception { // Import url final UrlImportRequest urlImportRequest = new UrlImportRequest().setUrl("http://some-url.com").setFilename("some-filename.jpg"); final Result urlImportTaskResponseResult = asyncCloudConvertClient.importUsing().url(urlImportRequest).get(); - assertThat(urlImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(urlImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse urlImportTaskResponse = urlImportTaskResponseResult.getBody(); assertThat(urlImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_URL); @@ -193,7 +207,7 @@ public void importTasksCreation() throws Exception { // Import upload final UploadImportRequest uploadImportRequest = new UploadImportRequest(); final Result uploadImportTaskResponseResult = asyncCloudConvertClient.importUsing().upload(uploadImportRequest).get(); - assertThat(uploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(uploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse uploadImportTaskResponse = uploadImportTaskResponseResult.getBody(); assertThat(uploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); @@ -202,7 +216,7 @@ public void importTasksCreation() throws Exception { final S3ImportRequest s3ImportRequest = new S3ImportRequest().setBucket("some-bucket").setRegion("some-region") .setAccessKeyId("some-access-key-id").setSecretAccessKey("some-secret-access-key").setKey("some-key"); final Result s3ImportTaskResponseResult = asyncCloudConvertClient.importUsing().s3(s3ImportRequest).get(); - assertThat(s3ImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(s3ImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse s3ImportTaskResponse = s3ImportTaskResponseResult.getBody(); assertThat(s3ImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_S3); @@ -211,7 +225,7 @@ public void importTasksCreation() throws Exception { final AzureBlobImportRequest azureBlobImportRequest = new AzureBlobImportRequest().setStorageAccount("some-storage-account") .setStorageAccessKey("some-storage-access-key").setContainer("some-container").setBlob("some-blob"); final Result azureBlobImportTaskResponseResult = asyncCloudConvertClient.importUsing().azureBlob(azureBlobImportRequest).get(); - assertThat(azureBlobImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(azureBlobImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse azureBlobImportTaskResponse = azureBlobImportTaskResponseResult.getBody(); assertThat(azureBlobImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_AZURE_BLOB); @@ -222,7 +236,7 @@ public void importTasksCreation() throws Exception { .setPrivateKey("some-private-key").setFile("some-file"); final Result googleCloudStorageImportTaskResponseResult = asyncCloudConvertClient.importUsing() .googleCloudStorage(googleCloudStorageImportRequest).get(); - assertThat(googleCloudStorageImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(googleCloudStorageImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse googleCloudStorageImportTaskResponse = googleCloudStorageImportTaskResponseResult.getBody(); assertThat(googleCloudStorageImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_GOOGLE_CLOUD_STORAGE); @@ -232,7 +246,7 @@ public void importTasksCreation() throws Exception { .setAuthUrl("some-auth-url").setUsername("some-username").setPassword("some-password") .setRegion("some-region").setContainer("some-container").setFile("some-file"); final Result openStackImportTaskResponseResult = asyncCloudConvertClient.importUsing().openStack(openStackImportRequest).get(); - assertThat(openStackImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(openStackImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse openStackImportTaskResponse = openStackImportTaskResponseResult.getBody(); assertThat(openStackImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_OPENSTACK); @@ -241,7 +255,7 @@ public void importTasksCreation() throws Exception { final SftpImportRequest sftpImportRequest = new SftpImportRequest().setHost("some-host").setUsername("some-username") .setPassword("some-password").setFile("some-file"); final Result sftpImportTaskResponseResult = asyncCloudConvertClient.importUsing().sftp(sftpImportRequest).get(); - assertThat(sftpImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(sftpImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse sftpImportTaskResponse = sftpImportTaskResponseResult.getBody(); assertThat(sftpImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_SFTP); @@ -249,7 +263,7 @@ public void importTasksCreation() throws Exception { // Import Base64 final Base64ImportRequest base64ImportRequest = new Base64ImportRequest().setFile("dGVzdDEyMw==").setFilename("test.txt"); final Result base64ImportTaskResponseResult = asyncCloudConvertClient.importUsing().base64(base64ImportRequest).get(); - assertThat(base64ImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(base64ImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse base64ImportTaskResponse = base64ImportTaskResponseResult.getBody(); assertThat(base64ImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_BASE64); @@ -257,7 +271,7 @@ public void importTasksCreation() throws Exception { // Import Raw final RawImportRequest rawImportRequest = new RawImportRequest().setFile("content").setFilename("test.txt"); final Result rawImportTaskResponseResult = asyncCloudConvertClient.importUsing().raw(rawImportRequest).get(); - assertThat(rawImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(rawImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse rawImportTaskResponse = rawImportTaskResponseResult.getBody(); assertThat(rawImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_RAW); @@ -272,7 +286,7 @@ public void exportTasksCreation() throws Exception { // Import upload (immediate upload) final Result uploadImportTaskResponseResult = asyncCloudConvertClient.importUsing() .upload(new UploadImportRequest(), jpgTest1InputStream).get(); - assertThat(uploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(uploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse uploadImportTaskResponse = uploadImportTaskResponseResult.getBody(); assertThat(uploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); @@ -280,7 +294,7 @@ public void exportTasksCreation() throws Exception { // Export url final UrlExportRequest urlExportRequest = new UrlExportRequest().setInput(uploadImportTaskResponse.getId()); final Result urlExportTaskResponseResult = asyncCloudConvertClient.exportUsing().url(urlExportRequest).get(); - assertThat(urlExportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(urlExportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse urlExportTaskResponse = urlExportTaskResponseResult.getBody(); assertThat(urlExportTaskResponse.getOperation()).isEqualTo(Operation.EXPORT_URL); @@ -290,7 +304,7 @@ public void exportTasksCreation() throws Exception { .setBucket("some-bucket").setRegion("some-region").setAccessKeyId("some-access-key-id") .setSecretAccessKey("some-secret-access-key").setKey("some-key"); final Result s3ExportTaskResponseResult = asyncCloudConvertClient.exportUsing().s3(s3ExportRequest).get(); - assertThat(s3ExportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(s3ExportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse s3ExportTaskResponse = s3ExportTaskResponseResult.getBody(); assertThat(s3ExportTaskResponse.getOperation()).isEqualTo(Operation.EXPORT_S3); @@ -300,7 +314,7 @@ public void exportTasksCreation() throws Exception { .setInput(uploadImportTaskResponse.getId()).setStorageAccount("some-storage-account") .setStorageAccessKey("some-storage-access-key").setContainer("some-container").setBlob("some-blob"); final Result azureBlobExportTaskResponseResult = asyncCloudConvertClient.exportUsing().azureBlob(azureBlobExportRequest).get(); - assertThat(azureBlobExportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(azureBlobExportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse azureBlobExportTaskResponse = azureBlobExportTaskResponseResult.getBody(); assertThat(azureBlobExportTaskResponse.getOperation()).isEqualTo(Operation.EXPORT_AZURE_BLOB); @@ -311,7 +325,7 @@ public void exportTasksCreation() throws Exception { .setBucket("some-bucket").setClientEmail("some-client-email").setPrivateKey("some-private-key").setFile("some-file"); final Result googleCloudStorageExportTaskResponseResult = asyncCloudConvertClient.exportUsing() .googleCloudStorage(googleCloudStorageExportRequest).get(); - assertThat(googleCloudStorageExportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(googleCloudStorageExportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse googleCloudStorageExportTaskResponse = googleCloudStorageExportTaskResponseResult.getBody(); assertThat(googleCloudStorageExportTaskResponse.getOperation()).isEqualTo(Operation.EXPORT_GOOGLE_CLOUD_STORAGE); @@ -321,7 +335,7 @@ public void exportTasksCreation() throws Exception { .setInput(uploadImportTaskResponse.getId()).setAuthUrl("some-auth-url").setUsername("some-username") .setPassword("some-password").setRegion("some-region").setContainer("some-container").setFile("some-file"); final Result openStackExportTaskResponseResult = asyncCloudConvertClient.exportUsing().openStack(openStackExportRequest).get(); - assertThat(openStackExportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(openStackExportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse openStackExportTaskResponse = openStackExportTaskResponseResult.getBody(); assertThat(openStackExportTaskResponse.getOperation()).isEqualTo(Operation.EXPORT_OPENSTACK); @@ -330,7 +344,7 @@ public void exportTasksCreation() throws Exception { final SftpExportRequest sftpExportRequest = new SftpExportRequest().setInput(uploadImportTaskResponse.getId()) .setHost("some-host").setUsername("some-username").setPassword("some-password").setFile("some-file"); final Result sftpExportTaskResponseResult = asyncCloudConvertClient.exportUsing().sftp(sftpExportRequest).get(); - assertThat(sftpExportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(sftpExportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse sftpExportTaskResponse = sftpExportTaskResponseResult.getBody(); assertThat(sftpExportTaskResponse.getOperation()).isEqualTo(Operation.EXPORT_SFTP); diff --git a/src/test/java/com/cloudconvert/test/integration/AsyncJobsIntegrationTest.java b/src/test/java/com/cloudconvert/test/integration/AsyncJobsIntegrationTest.java index ab60d35..826ccfe 100644 --- a/src/test/java/com/cloudconvert/test/integration/AsyncJobsIntegrationTest.java +++ b/src/test/java/com/cloudconvert/test/integration/AsyncJobsIntegrationTest.java @@ -72,7 +72,7 @@ mergeFile1AndFile2TaskName, new MergeFilesTaskRequest().setOutputFormat(PDF).set // Create job final Result jobResponseResult = asyncCloudConvertClient.jobs().create(tasks).get(); - assertThat(jobResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(jobResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final JobResponse jobResponse = jobResponseResult.getBody(); assertThat(jobResponse.getTasks()).hasSize(3); @@ -92,7 +92,7 @@ mergeFile1AndFile2TaskName, new MergeFilesTaskRequest().setOutputFormat(PDF).set // Upload (actual upload file 1) final Result uploadFile1TaskResponseResult = asyncCloudConvertClient.importUsing() .upload(uploadFile1TaskJobResponse.getId(), uploadFile1TaskJobResponse.getResult().getForm(), odtTest1InputStream).get(); - assertThat(uploadFile1TaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(uploadFile1TaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse uploadFile1TaskResponse = uploadFile1TaskResponseResult.getBody(); assertThat(uploadFile1TaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); @@ -100,14 +100,14 @@ mergeFile1AndFile2TaskName, new MergeFilesTaskRequest().setOutputFormat(PDF).set // Upload (actual upload file 2) final Result uploadFile2TaskResponseResult = asyncCloudConvertClient.importUsing() .upload(uploadFile2TaskJobResponse.getId(), uploadFile2TaskJobResponse.getResult().getForm(), odtTest2InputStream).get(); - assertThat(uploadFile2TaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(uploadFile2TaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse uploadFile2TaskResponse = uploadFile2TaskResponseResult.getBody(); assertThat(uploadFile2TaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); // Wait final Result waitJobResponseResult = asyncCloudConvertClient.jobs().wait(jobResponse.getId()).get(); - assertThat(waitJobResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(waitJobResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final JobResponse waitJobResponse = waitJobResponseResult.getBody(); assertThat(waitJobResponse.getStatus()).isEqualTo(Status.FINISHED); @@ -115,7 +115,7 @@ mergeFile1AndFile2TaskName, new MergeFilesTaskRequest().setOutputFormat(PDF).set // Show final Result showJobResponseResult = asyncCloudConvertClient.jobs().show(jobResponse.getId()).get(); - assertThat(showJobResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(showJobResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final JobResponse showJobResponse = showJobResponseResult.getBody(); assertThat(showJobResponse.getStatus()).isEqualTo(Status.FINISHED); @@ -123,7 +123,7 @@ mergeFile1AndFile2TaskName, new MergeFilesTaskRequest().setOutputFormat(PDF).set // Delete job final Result deleteVoidResult = asyncCloudConvertClient.jobs().delete(jobResponse.getId()).get(); - assertThat(deleteVoidResult.getStatus()).isEqualTo(HttpStatus.SC_NO_CONTENT); + assertThat(deleteVoidResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_NO_CONTENT); } @Test(timeout = TIMEOUT) @@ -131,7 +131,7 @@ public void listJobsLifecycle() throws Exception { // List jobs final Result> jobResponsePageable = asyncCloudConvertClient.jobs() .list(ImmutableMap.of(), ImmutableList.of(), new Pagination(10, 1)).get(); - assertThat(jobResponsePageable.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(jobResponsePageable.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); } @After diff --git a/src/test/java/com/cloudconvert/test/integration/AsyncTasksIntegrationTest.java b/src/test/java/com/cloudconvert/test/integration/AsyncTasksIntegrationTest.java index 6453514..0d31894 100644 --- a/src/test/java/com/cloudconvert/test/integration/AsyncTasksIntegrationTest.java +++ b/src/test/java/com/cloudconvert/test/integration/AsyncTasksIntegrationTest.java @@ -3,7 +3,15 @@ import com.cloudconvert.client.AsyncCloudConvertClient; import com.cloudconvert.dto.Operation; import com.cloudconvert.dto.Status; -import com.cloudconvert.dto.request.*; +import com.cloudconvert.dto.request.CaptureWebsitesTaskRequest; +import com.cloudconvert.dto.request.ConvertFilesTaskRequest; +import com.cloudconvert.dto.request.CreateArchivesTaskRequest; +import com.cloudconvert.dto.request.CreateThumbnailsTaskRequest; +import com.cloudconvert.dto.request.ExecuteCommandsTaskRequest; +import com.cloudconvert.dto.request.GetMetadataTaskRequest; +import com.cloudconvert.dto.request.OptimizeFilesTaskRequest; +import com.cloudconvert.dto.request.UploadImportRequest; +import com.cloudconvert.dto.request.WriteMetadataTaskRequest; import com.cloudconvert.dto.response.OperationResponse; import com.cloudconvert.dto.response.Pageable; import com.cloudconvert.dto.response.TaskResponse; @@ -54,14 +62,14 @@ public void before() throws Exception { public void convertFileTaskLifecycle() throws Exception { // Import upload (immediate upload) final Result uploadImportTaskResponseResult = asyncCloudConvertClient.importUsing().upload(new UploadImportRequest(), jpgTest1InputStream).get(); - assertThat(uploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(uploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse uploadImportTaskResponse = uploadImportTaskResponseResult.getBody(); assertThat(uploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); // List convert formats final Result> convertFormatsOperationResponsePageableResult = asyncCloudConvertClient.tasks().convertFormats().get(); - assertThat(convertFormatsOperationResponsePageableResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(convertFormatsOperationResponsePageableResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final List operationResponses = convertFormatsOperationResponsePageableResult.getBody().getData(); assertThat(operationResponses).anySatisfy(operationResponse -> assertThat(operationResponse.getOutputFormat()).isEqualTo(JPG)); @@ -69,14 +77,14 @@ public void convertFileTaskLifecycle() throws Exception { // Convert final ConvertFilesTaskRequest convertFilesTaskRequest = new ConvertFilesTaskRequest().setInput(uploadImportTaskResponse.getId()).setInputFormat(JPG).setOutputFormat(PNG); final Result convertTaskResponseResult = asyncCloudConvertClient.tasks().convert(convertFilesTaskRequest).get(); - assertThat(convertTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(convertTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse convertTaskResponse = convertTaskResponseResult.getBody(); assertThat(convertTaskResponse.getOperation()).isEqualTo(Operation.CONVERT); // Wait final Result waitConvertTaskResponseResult = asyncCloudConvertClient.tasks().wait(convertTaskResponse.getId()).get(); - assertThat(waitConvertTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(waitConvertTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse waitConvertTaskResponse = waitConvertTaskResponseResult.getBody(); assertThat(waitConvertTaskResponse.getOperation()).isEqualTo(Operation.CONVERT); @@ -85,7 +93,7 @@ public void convertFileTaskLifecycle() throws Exception { // Show final Result showConvertTaskResponseResult = asyncCloudConvertClient.tasks().show(convertTaskResponse.getId()).get(); - assertThat(showConvertTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(showConvertTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse showConvertTaskResponse = showConvertTaskResponseResult.getBody(); assertThat(showConvertTaskResponse.getOperation()).isEqualTo(Operation.CONVERT); @@ -94,14 +102,14 @@ public void convertFileTaskLifecycle() throws Exception { // Delete final Result deleteVoidResult = asyncCloudConvertClient.tasks().delete(convertTaskResponse.getId()).get(); - assertThat(deleteVoidResult.getStatus()).isEqualTo(HttpStatus.SC_NO_CONTENT); + assertThat(deleteVoidResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_NO_CONTENT); } @Test(timeout = TIMEOUT) public void optimizeFileTaskLifecycle() throws Exception { // Import upload (immediate upload) final Result uploadImportTaskResponseResult = asyncCloudConvertClient.importUsing().upload(new UploadImportRequest(), jpgTest1InputStream).get(); - assertThat(uploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(uploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse uploadImportTaskResponse = uploadImportTaskResponseResult.getBody(); assertThat(uploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); @@ -109,14 +117,14 @@ public void optimizeFileTaskLifecycle() throws Exception { // Optimize final OptimizeFilesTaskRequest optimizeFilesTaskRequest = new OptimizeFilesTaskRequest().setInput(uploadImportTaskResponse.getId()).setInputFormat(JPG); final Result optimizeTaskResponseResult = asyncCloudConvertClient.tasks().optimize(optimizeFilesTaskRequest).get(); - assertThat(optimizeTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(optimizeTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse optimizeTaskResponse = optimizeTaskResponseResult.getBody(); assertThat(optimizeTaskResponse.getOperation()).isEqualTo(Operation.OPTIMIZE); // Wait final Result waitOptimizeTaskResponseResult = asyncCloudConvertClient.tasks().wait(optimizeTaskResponse.getId()).get(); - assertThat(waitOptimizeTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(waitOptimizeTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse waitOptimizeTaskResponse = waitOptimizeTaskResponseResult.getBody(); assertThat(waitOptimizeTaskResponse.getOperation()).isEqualTo(Operation.OPTIMIZE); @@ -125,7 +133,7 @@ public void optimizeFileTaskLifecycle() throws Exception { // Show final Result showOptimizeTaskResponseResult = asyncCloudConvertClient.tasks().show(optimizeTaskResponse.getId()).get(); - assertThat(showOptimizeTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(showOptimizeTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse showOptimizeTaskResponse = showOptimizeTaskResponseResult.getBody(); assertThat(showOptimizeTaskResponse.getOperation()).isEqualTo(Operation.OPTIMIZE); @@ -134,7 +142,7 @@ public void optimizeFileTaskLifecycle() throws Exception { // Delete final Result deleteVoidResult = asyncCloudConvertClient.tasks().delete(optimizeTaskResponse.getId()).get(); - assertThat(deleteVoidResult.getStatus()).isEqualTo(HttpStatus.SC_NO_CONTENT); + assertThat(deleteVoidResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_NO_CONTENT); } @Test(timeout = TIMEOUT) @@ -142,14 +150,14 @@ public void captureWebsiteTaskLifecycle() throws Exception { // Capture final CaptureWebsitesTaskRequest captureWebsitesTaskRequest = new CaptureWebsitesTaskRequest().setUrl(URL).setOutputFormat(PDF); final Result captureTaskResponseResult = asyncCloudConvertClient.tasks().capture(captureWebsitesTaskRequest).get(); - assertThat(captureTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(captureTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse captureTaskResponse = captureTaskResponseResult.getBody(); assertThat(captureTaskResponse.getOperation()).isEqualTo(Operation.CAPTURE_WEBSITE); // Wait final Result waitCaptureTaskResponseResult = asyncCloudConvertClient.tasks().wait(captureTaskResponse.getId()).get(); - assertThat(waitCaptureTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(waitCaptureTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse waitCaptureTaskResponse = waitCaptureTaskResponseResult.getBody(); assertThat(waitCaptureTaskResponse.getOperation()).isEqualTo(Operation.CAPTURE_WEBSITE); @@ -158,7 +166,7 @@ public void captureWebsiteTaskLifecycle() throws Exception { // Show final Result showCaptureTaskResponseResult = asyncCloudConvertClient.tasks().show(captureTaskResponse.getId()).get(); - assertThat(showCaptureTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(showCaptureTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse showCaptureTaskResponse = showCaptureTaskResponseResult.getBody(); assertThat(showCaptureTaskResponse.getOperation()).isEqualTo(Operation.CAPTURE_WEBSITE); @@ -167,7 +175,7 @@ public void captureWebsiteTaskLifecycle() throws Exception { // Delete final Result deleteVoidResult = asyncCloudConvertClient.tasks().delete(captureTaskResponse.getId()).get(); - assertThat(deleteVoidResult.getStatus()).isEqualTo(HttpStatus.SC_NO_CONTENT); + assertThat(deleteVoidResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_NO_CONTENT); } @Test(timeout = TIMEOUT) @@ -175,7 +183,7 @@ public void createArchiveTaskLifecycle() throws Exception { // Import upload (immediate upload) final Result uploadImportTaskResponseResult = asyncCloudConvertClient.importUsing() .upload(new UploadImportRequest(), jpgTest1InputStream).get(); - assertThat(uploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(uploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse uploadImportTaskResponse = uploadImportTaskResponseResult.getBody(); assertThat(uploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); @@ -184,14 +192,14 @@ public void createArchiveTaskLifecycle() throws Exception { final CreateArchivesTaskRequest createArchivesTaskRequest = new CreateArchivesTaskRequest() .setInput(uploadImportTaskResponse.getId()).setOutputFormat(ZIP); final Result archiveTaskResponseResult = asyncCloudConvertClient.tasks().archive(createArchivesTaskRequest).get(); - assertThat(archiveTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(archiveTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse archiveTaskResponse = archiveTaskResponseResult.getBody(); assertThat(archiveTaskResponse.getOperation()).isEqualTo(Operation.ARCHIVE); // Wait final Result waitArchiveTaskResponseResult = asyncCloudConvertClient.tasks().wait(archiveTaskResponse.getId()).get(); - assertThat(waitArchiveTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(waitArchiveTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse waitArchiveTaskResponse = waitArchiveTaskResponseResult.getBody(); assertThat(waitArchiveTaskResponse.getOperation()).isEqualTo(Operation.ARCHIVE); @@ -200,7 +208,7 @@ public void createArchiveTaskLifecycle() throws Exception { // Show final Result showArchiveTaskResponseResult = asyncCloudConvertClient.tasks().show(archiveTaskResponse.getId()).get(); - assertThat(showArchiveTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(showArchiveTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse showArchiveTaskResponse = showArchiveTaskResponseResult.getBody(); assertThat(showArchiveTaskResponse.getOperation()).isEqualTo(Operation.ARCHIVE); @@ -209,7 +217,7 @@ public void createArchiveTaskLifecycle() throws Exception { // Delete final Result deleteVoidResult = asyncCloudConvertClient.tasks().delete(archiveTaskResponse.getId()).get(); - assertThat(deleteVoidResult.getStatus()).isEqualTo(HttpStatus.SC_NO_CONTENT); + assertThat(deleteVoidResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_NO_CONTENT); } @Test(timeout = TIMEOUT) @@ -217,7 +225,7 @@ public void executeCommandTaskLifecycle() throws Exception { // Import upload (immediate upload) final Result uploadImportTaskResponseResult = asyncCloudConvertClient.importUsing() .upload(new UploadImportRequest(), jpgTest1InputStream).get(); - assertThat(uploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(uploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse uploadImportTaskResponse = uploadImportTaskResponseResult.getBody(); assertThat(uploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); @@ -227,14 +235,14 @@ public void executeCommandTaskLifecycle() throws Exception { .setInput(uploadImportTaskResponse.getId()).setEngine(ExecuteCommandsTaskRequest.Engine.GRAPHICSMAGICK) .setCommand(ExecuteCommandsTaskRequest.Command.GM).setArguments("version"); final Result executeTaskResponseResult = asyncCloudConvertClient.tasks().command(executeCommandsTaskRequest).get(); - assertThat(executeTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(executeTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse executeTaskResponse = executeTaskResponseResult.getBody(); assertThat(executeTaskResponse.getOperation()).isEqualTo(Operation.COMMAND); // Wait final Result waitExecuteTaskResponseResult = asyncCloudConvertClient.tasks().wait(executeTaskResponse.getId()).get(); - assertThat(waitExecuteTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(waitExecuteTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse waitExecuteTaskResponse = waitExecuteTaskResponseResult.getBody(); assertThat(waitExecuteTaskResponse.getOperation()).isEqualTo(Operation.COMMAND); @@ -243,7 +251,7 @@ public void executeCommandTaskLifecycle() throws Exception { // Show final Result showExecuteTaskResponseResult = asyncCloudConvertClient.tasks().show(executeTaskResponse.getId()).get(); - assertThat(showExecuteTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(showExecuteTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse showExecuteTaskResponse = showExecuteTaskResponseResult.getBody(); assertThat(showExecuteTaskResponse.getOperation()).isEqualTo(Operation.COMMAND); @@ -252,14 +260,14 @@ public void executeCommandTaskLifecycle() throws Exception { // Delete final Result deleteVoidResult = asyncCloudConvertClient.tasks().delete(executeTaskResponse.getId()).get(); - assertThat(deleteVoidResult.getStatus()).isEqualTo(HttpStatus.SC_NO_CONTENT); + assertThat(deleteVoidResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_NO_CONTENT); } @Test(timeout = TIMEOUT) public void createThumbnailTaskLifecycle() throws Exception { // Import upload (immediate upload) final Result uploadImportTaskResponseResult = asyncCloudConvertClient.importUsing().upload(new UploadImportRequest(), jpgTest1InputStream).get(); - assertThat(uploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(uploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse uploadImportTaskResponse = uploadImportTaskResponseResult.getBody(); assertThat(uploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); @@ -267,14 +275,14 @@ public void createThumbnailTaskLifecycle() throws Exception { // Convert final CreateThumbnailsTaskRequest createThumbnailsTaskRequest = new CreateThumbnailsTaskRequest().setInput(uploadImportTaskResponse.getId()).setInputFormat(JPG).setOutputFormat(PNG); final Result thumbnailTaskResponseResult = asyncCloudConvertClient.tasks().thumbnail(createThumbnailsTaskRequest).get(); - assertThat(thumbnailTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(thumbnailTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse thumbnailTaskResponse = thumbnailTaskResponseResult.getBody(); assertThat(thumbnailTaskResponse.getOperation()).isEqualTo(Operation.THUMBNAIL); // Wait final Result waitThumbnailTaskResponseResult = asyncCloudConvertClient.tasks().wait(thumbnailTaskResponse.getId()).get(); - assertThat(waitThumbnailTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(waitThumbnailTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse waitThumbnailTaskResponse = waitThumbnailTaskResponseResult.getBody(); assertThat(waitThumbnailTaskResponse.getOperation()).isEqualTo(Operation.THUMBNAIL); @@ -283,7 +291,7 @@ public void createThumbnailTaskLifecycle() throws Exception { // Show final Result showConvertTaskResponseResult = asyncCloudConvertClient.tasks().show(thumbnailTaskResponse.getId()).get(); - assertThat(showConvertTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(showConvertTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse showConvertTaskResponse = showConvertTaskResponseResult.getBody(); assertThat(showConvertTaskResponse.getOperation()).isEqualTo(Operation.THUMBNAIL); @@ -292,14 +300,14 @@ public void createThumbnailTaskLifecycle() throws Exception { // Delete final Result deleteVoidResult = asyncCloudConvertClient.tasks().delete(thumbnailTaskResponse.getId()).get(); - assertThat(deleteVoidResult.getStatus()).isEqualTo(HttpStatus.SC_NO_CONTENT); + assertThat(deleteVoidResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_NO_CONTENT); } @Test(timeout = TIMEOUT) public void getMetadataTaskLifecycle() throws Exception { // Import upload (immediate upload) final Result uploadImportTaskResponseResult = asyncCloudConvertClient.importUsing().upload(new UploadImportRequest(), jpgTest1InputStream).get(); - assertThat(uploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(uploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse uploadImportTaskResponse = uploadImportTaskResponseResult.getBody(); assertThat(uploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); @@ -307,14 +315,14 @@ public void getMetadataTaskLifecycle() throws Exception { // Get Metadata final GetMetadataTaskRequest getMetadataTaskRequest = new GetMetadataTaskRequest().setInput(uploadImportTaskResponse.getId()).setInputFormat(JPG); final Result getMetadataTaskResponseResult = asyncCloudConvertClient.tasks().metadata(getMetadataTaskRequest).get(); - assertThat(getMetadataTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(getMetadataTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse metadataTaskResponse = getMetadataTaskResponseResult.getBody(); assertThat(metadataTaskResponse.getOperation()).isEqualTo(Operation.METADATA); // Wait final Result waitGetMetadataResponseResult = asyncCloudConvertClient.tasks().wait(metadataTaskResponse.getId()).get(); - assertThat(waitGetMetadataResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(waitGetMetadataResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse waitMetadataTaskResponse = waitGetMetadataResponseResult.getBody(); assertThat(waitMetadataTaskResponse.getOperation()).isEqualTo(Operation.METADATA); @@ -323,7 +331,7 @@ public void getMetadataTaskLifecycle() throws Exception { // Show final Result showMetadataResponseResult = asyncCloudConvertClient.tasks().show(metadataTaskResponse.getId()).get(); - assertThat(showMetadataResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(showMetadataResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse showMetadataTaskResponse = showMetadataResponseResult.getBody(); assertThat(showMetadataTaskResponse.getOperation()).isEqualTo(Operation.METADATA); @@ -333,34 +341,34 @@ public void getMetadataTaskLifecycle() throws Exception { // Delete final Result deleteVoidResult = asyncCloudConvertClient.tasks().delete(metadataTaskResponse.getId()).get(); - assertThat(deleteVoidResult.getStatus()).isEqualTo(HttpStatus.SC_NO_CONTENT); + assertThat(deleteVoidResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_NO_CONTENT); } @Test(timeout = TIMEOUT) public void writeMetadataTaskLifecycle() throws Exception { // Import upload (immediate upload) final Result uploadImportTaskResponseResult = asyncCloudConvertClient.importUsing().upload(new UploadImportRequest(), jpgTest1InputStream).get(); - assertThat(uploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(uploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse uploadImportTaskResponse = uploadImportTaskResponseResult.getBody(); assertThat(uploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); // Write Metadata final WriteMetadataTaskRequest writeMetadataTaskRequest = new WriteMetadataTaskRequest() - .setInput(uploadImportTaskResponse.getId()) - .setInputFormat(JPG) - .setMetadata(new HashMap() {{ - put("Author", "CloudConvert"); - }}); + .setInput(uploadImportTaskResponse.getId()) + .setInputFormat(JPG) + .setMetadata(new HashMap() {{ + put("Author", "CloudConvert"); + }}); final Result writeMetadataTaskResponseResult = asyncCloudConvertClient.tasks().writeMetadata(writeMetadataTaskRequest).get(); - assertThat(writeMetadataTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(writeMetadataTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse writeMetadataTaskResponse = writeMetadataTaskResponseResult.getBody(); assertThat(writeMetadataTaskResponse.getOperation()).isEqualTo(Operation.METADATA_WRITE); // Wait final Result waitWriteMetadataResponseResult = asyncCloudConvertClient.tasks().wait(writeMetadataTaskResponse.getId()).get(); - assertThat(waitWriteMetadataResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(waitWriteMetadataResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse waitWriteMetadataTaskResponse = waitWriteMetadataResponseResult.getBody(); assertThat(waitWriteMetadataTaskResponse.getOperation()).isEqualTo(Operation.METADATA_WRITE); @@ -369,7 +377,7 @@ public void writeMetadataTaskLifecycle() throws Exception { // Show final Result showWriteMetadataResponseResult = asyncCloudConvertClient.tasks().show(writeMetadataTaskResponse.getId()).get(); - assertThat(showWriteMetadataResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(showWriteMetadataResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse showWriteMetadataTaskResponse = showWriteMetadataResponseResult.getBody(); assertThat(showWriteMetadataTaskResponse.getOperation()).isEqualTo(Operation.METADATA_WRITE); @@ -378,7 +386,7 @@ public void writeMetadataTaskLifecycle() throws Exception { // Delete final Result deleteVoidResult = asyncCloudConvertClient.tasks().delete(writeMetadataTaskResponse.getId()).get(); - assertThat(deleteVoidResult.getStatus()).isEqualTo(HttpStatus.SC_NO_CONTENT); + assertThat(deleteVoidResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_NO_CONTENT); } @@ -386,12 +394,12 @@ public void writeMetadataTaskLifecycle() throws Exception { public void listTasksLifecycle() throws Exception { // List operations final Result> operationResponsePageable = asyncCloudConvertClient.tasks().operations().get(); - assertThat(operationResponsePageable.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(operationResponsePageable.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); // List tasks final Result> taskResponsePageable = asyncCloudConvertClient.tasks() .list(ImmutableMap.of(), ImmutableList.of(), new Pagination(100, 1)).get(); - assertThat(taskResponsePageable.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(taskResponsePageable.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); } @After diff --git a/src/test/java/com/cloudconvert/test/integration/AsyncWebhooksIntegrationTest.java b/src/test/java/com/cloudconvert/test/integration/AsyncWebhooksIntegrationTest.java index e0de434..1054c09 100644 --- a/src/test/java/com/cloudconvert/test/integration/AsyncWebhooksIntegrationTest.java +++ b/src/test/java/com/cloudconvert/test/integration/AsyncWebhooksIntegrationTest.java @@ -37,7 +37,7 @@ public void before() throws Exception { @Test(timeout = TIMEOUT) public void userLifecycle() throws Exception { final Result userResponseResult = asyncCloudConvertClient.users().me().get(); - assertThat(userResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(userResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); assertThat(userResponseResult.getBody()).isNotNull(); } @@ -47,7 +47,7 @@ public void webhooksLifecycle() throws Exception { final WebhookRequest webhookRequest = new WebhookRequest().setUrl("http://some-url.com") .setEvents(ImmutableList.of(Event.JOB_CREATED, Event.JOB_FAILED, Event.JOB_FINISHED)); final Result createWebhookResponseResult = asyncCloudConvertClient.webhooks().create(webhookRequest).get(); - assertThat(createWebhookResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(createWebhookResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); assertThat(createWebhookResponseResult.getBody()).isNotNull(); final WebhookResponse createWebhookResponse = createWebhookResponseResult.getBody(); @@ -55,11 +55,11 @@ public void webhooksLifecycle() throws Exception { // List final Result> webhookResponsePageable = asyncCloudConvertClient.webhooks().list().get(); - assertThat(webhookResponsePageable.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(webhookResponsePageable.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); // Delete final Result deleteWebhookResponseResult = asyncCloudConvertClient.webhooks().delete(createWebhookResponse.getId()).get(); - assertThat(deleteWebhookResponseResult.getStatus()).isEqualTo(HttpStatus.SC_NO_CONTENT); + assertThat(deleteWebhookResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_NO_CONTENT); // Verify assertThat(asyncCloudConvertClient.webhooks().verify(WEBHOOK_PAYLOAD, WEBHOOK_SIGNATURE)).isTrue(); diff --git a/src/test/java/com/cloudconvert/test/integration/CloudConvertClientExceptionTest.java b/src/test/java/com/cloudconvert/test/integration/CloudConvertClientExceptionTest.java new file mode 100644 index 0000000..d0a764b --- /dev/null +++ b/src/test/java/com/cloudconvert/test/integration/CloudConvertClientExceptionTest.java @@ -0,0 +1,73 @@ +package com.cloudconvert.test.integration; + +import com.cloudconvert.client.CloudConvertClient; +import com.cloudconvert.client.setttings.PropertyFileSettingsProvider; +import com.cloudconvert.dto.request.UploadImportRequest; +import com.cloudconvert.exception.CloudConvertClientException; +import com.cloudconvert.test.framework.AbstractTest; +import com.cloudconvert.test.framework.IntegrationTest; +import com.google.common.collect.ImmutableMap; +import org.apache.http.HttpStatus; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.experimental.categories.Category; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +import java.io.InputStream; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.catchThrowableOfType; + +@Category(IntegrationTest.class) +@RunWith(JUnit4.class) +public class CloudConvertClientExceptionTest extends AbstractTest { + + private static final String JPG_TEST_FILE_1 = "image-test-file-1.jpg"; + + private CloudConvertClient cloudConvertUnauthorizedClient; + private CloudConvertClient cloudConvertAuthorizedClient; + + private InputStream jpgTest1InputStream; + + @Before + public void before() throws Exception { + cloudConvertUnauthorizedClient = new CloudConvertClient(new PropertyFileSettingsProvider("invalid-application.properties")); + cloudConvertAuthorizedClient = new CloudConvertClient(new PropertyFileSettingsProvider("application.properties")); + + jpgTest1InputStream = CloudConvertClientExceptionTest.class.getClassLoader().getResourceAsStream(JPG_TEST_FILE_1); + } + + @Test(timeout = TIMEOUT) + public void unauthorized() throws Exception { + final CloudConvertClientException cloudConvertClientException = catchThrowableOfType( + () -> cloudConvertUnauthorizedClient.importUsing().upload(new UploadImportRequest(), jpgTest1InputStream), CloudConvertClientException.class); + + assertThat(cloudConvertClientException.getStatus().getCode()).isEqualTo(HttpStatus.SC_UNAUTHORIZED); + assertThat(cloudConvertClientException.getStatus().getReason()).isEqualTo("Unauthorized"); + assertThat(cloudConvertClientException.getHeaders()).hasSize(6); + assertThat(cloudConvertClientException.getBody().getCode()).isEqualTo("UNAUTHENTICATED"); + assertThat(cloudConvertClientException.getBody().getMessage()).isEqualTo("Unauthenticated."); + } + + @Test(timeout = TIMEOUT) + public void unprocessableEntity() throws Exception { + final CloudConvertClientException cloudConvertClientException = catchThrowableOfType( + () -> cloudConvertAuthorizedClient.jobs().create(ImmutableMap.of()), CloudConvertClientException.class); + + assertThat(cloudConvertClientException.getStatus().getCode()).isEqualTo(HttpStatus.SC_UNPROCESSABLE_ENTITY); + assertThat(cloudConvertClientException.getStatus().getReason()).isEqualTo("Unprocessable Entity"); + assertThat(cloudConvertClientException.getHeaders()).hasSize(8); + assertThat(cloudConvertClientException.getBody().getCode()).isEqualTo("INVALID_DATA"); + assertThat(cloudConvertClientException.getBody().getMessage()).isEqualTo("The given data was invalid."); + assertThat(cloudConvertClientException.getBody().getErrors()).hasSize(1); + } + + @After + public void after() throws Exception { + jpgTest1InputStream.close(); + cloudConvertUnauthorizedClient.close(); + cloudConvertAuthorizedClient.close(); + } +} diff --git a/src/test/java/com/cloudconvert/test/integration/ImportsAndExportsIntegrationTest.java b/src/test/java/com/cloudconvert/test/integration/ImportsAndExportsIntegrationTest.java index 09058e2..0bc114c 100644 --- a/src/test/java/com/cloudconvert/test/integration/ImportsAndExportsIntegrationTest.java +++ b/src/test/java/com/cloudconvert/test/integration/ImportsAndExportsIntegrationTest.java @@ -3,7 +3,21 @@ import com.cloudconvert.client.CloudConvertClient; import com.cloudconvert.dto.Operation; import com.cloudconvert.dto.Status; -import com.cloudconvert.dto.request.*; +import com.cloudconvert.dto.request.AzureBlobExportRequest; +import com.cloudconvert.dto.request.AzureBlobImportRequest; +import com.cloudconvert.dto.request.Base64ImportRequest; +import com.cloudconvert.dto.request.GoogleCloudStorageExportRequest; +import com.cloudconvert.dto.request.GoogleCloudStorageImportRequest; +import com.cloudconvert.dto.request.OpenStackExportRequest; +import com.cloudconvert.dto.request.OpenStackImportRequest; +import com.cloudconvert.dto.request.RawImportRequest; +import com.cloudconvert.dto.request.S3ExportRequest; +import com.cloudconvert.dto.request.S3ImportRequest; +import com.cloudconvert.dto.request.SftpExportRequest; +import com.cloudconvert.dto.request.SftpImportRequest; +import com.cloudconvert.dto.request.UploadImportRequest; +import com.cloudconvert.dto.request.UrlExportRequest; +import com.cloudconvert.dto.request.UrlImportRequest; import com.cloudconvert.dto.response.TaskResponse; import com.cloudconvert.dto.result.Result; import com.cloudconvert.test.framework.AbstractTest; @@ -51,7 +65,7 @@ public void before() throws Exception { public void cancelAndRetryUploadImportTaskLifecycle() throws Exception { // Import upload (not immediate upload) final Result uploadImportTaskResponseResult = cloudConvertClient.importUsing().upload(new UploadImportRequest()); - assertThat(uploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(uploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse uploadImportTaskResponse = uploadImportTaskResponseResult.getBody(); assertThat(uploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); @@ -59,7 +73,7 @@ public void cancelAndRetryUploadImportTaskLifecycle() throws Exception { // Cancel final Result cancelUploadImportTaskResponseResult = cloudConvertClient.tasks().cancel(uploadImportTaskResponse.getId()); - assertThat(cancelUploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(cancelUploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse cancelUploadImportTaskResponse = cancelUploadImportTaskResponseResult.getBody(); assertThat(cancelUploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); @@ -69,7 +83,7 @@ public void cancelAndRetryUploadImportTaskLifecycle() throws Exception { // Retry final Result retryUploadImportTaskResponseResult = cloudConvertClient.tasks().retry(uploadImportTaskResponse.getId()); - assertThat(retryUploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(retryUploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse retryUploadImportTaskResponse = retryUploadImportTaskResponseResult.getBody(); assertThat(retryUploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); @@ -77,14 +91,14 @@ public void cancelAndRetryUploadImportTaskLifecycle() throws Exception { // Upload (actual upload) final Result uploadTaskResponseResult = cloudConvertClient.importUsing().upload(retryUploadImportTaskResponseResult, jpgTest1InputStream); - assertThat(uploadTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(uploadTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse uploadTaskResponse = uploadTaskResponseResult.getBody(); assertThat(uploadTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); // Wait import upload final Result waitRetryUploadImportTaskResponseResult = cloudConvertClient.tasks().wait(retryUploadImportTaskResponse.getId()); - assertThat(waitRetryUploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(waitRetryUploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse waitRetryUploadImportTaskResponse = waitRetryUploadImportTaskResponseResult.getBody(); assertThat(waitRetryUploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); @@ -96,14 +110,14 @@ public void cancelAndRetryUploadImportTaskLifecycle() throws Exception { public void uploadImportInputStreamAndExportUrlTaskLifecycle() throws Exception { // Import upload (immediate upload) final Result uploadImportTaskResponseResult = cloudConvertClient.importUsing().upload(new UploadImportRequest(), jpgTest1InputStream); - assertThat(uploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(uploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse uploadImportTaskResponse = uploadImportTaskResponseResult.getBody(); assertThat(uploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); // Wait import upload final Result waitUploadImportTaskResponseResult = cloudConvertClient.tasks().wait(uploadImportTaskResponse.getId()); - assertThat(waitUploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(waitUploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse waitUploadImportTaskResponse = waitUploadImportTaskResponseResult.getBody(); assertThat(waitUploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); @@ -112,14 +126,14 @@ public void uploadImportInputStreamAndExportUrlTaskLifecycle() throws Exception // Export url final UrlExportRequest urlExportRequest = new UrlExportRequest().setInput(uploadImportTaskResponse.getId()); final Result urlExportTaskResponseResult = cloudConvertClient.exportUsing().url(urlExportRequest); - assertThat(urlExportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(urlExportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse urlExportTaskResponse = urlExportTaskResponseResult.getBody(); assertThat(urlExportTaskResponse.getOperation()).isEqualTo(Operation.EXPORT_URL); // Wait export url final Result waitUrlExportTaskResponseResult = cloudConvertClient.tasks().wait(urlExportTaskResponse.getId()); - assertThat(waitUrlExportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(waitUrlExportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse waitUrlExportTaskResponse = waitUrlExportTaskResponseResult.getBody(); assertThat(waitUrlExportTaskResponse.getOperation()).isEqualTo(Operation.EXPORT_URL); @@ -128,7 +142,7 @@ public void uploadImportInputStreamAndExportUrlTaskLifecycle() throws Exception // Download file final Result inputStreamResult = cloudConvertClient.files().download(waitUrlExportTaskResponse.getResult().getFiles().get(0).get("url")); - assertThat(inputStreamResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(inputStreamResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); assertThat(MimeTypes.getDefaultMimeTypes().forName(tika.detect(inputStreamResult.getBody())).getName()).isEqualTo("image/jpeg"); } @@ -136,14 +150,14 @@ public void uploadImportInputStreamAndExportUrlTaskLifecycle() throws Exception public void uploadImportFileAndExportUrlTaskLifecycle() throws Exception { // Import upload (immediate upload) final Result uploadImportTaskResponseResult = cloudConvertClient.importUsing().upload(new UploadImportRequest(), jpgTest1File); - assertThat(uploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(uploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse uploadImportTaskResponse = uploadImportTaskResponseResult.getBody(); assertThat(uploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); // Wait import upload final Result waitUploadImportTaskResponseResult = cloudConvertClient.tasks().wait(uploadImportTaskResponse.getId()); - assertThat(waitUploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(waitUploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse waitUploadImportTaskResponse = waitUploadImportTaskResponseResult.getBody(); assertThat(waitUploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); @@ -152,14 +166,14 @@ public void uploadImportFileAndExportUrlTaskLifecycle() throws Exception { // Export url final UrlExportRequest urlExportRequest = new UrlExportRequest().setInput(uploadImportTaskResponse.getId()); final Result urlExportTaskResponseResult = cloudConvertClient.exportUsing().url(urlExportRequest); - assertThat(urlExportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(urlExportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse urlExportTaskResponse = urlExportTaskResponseResult.getBody(); assertThat(urlExportTaskResponse.getOperation()).isEqualTo(Operation.EXPORT_URL); // Wait export url final Result waitUrlExportTaskResponseResult = cloudConvertClient.tasks().wait(urlExportTaskResponse.getId()); - assertThat(waitUrlExportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(waitUrlExportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse waitUrlExportTaskResponse = waitUrlExportTaskResponseResult.getBody(); assertThat(waitUrlExportTaskResponse.getOperation()).isEqualTo(Operation.EXPORT_URL); @@ -168,7 +182,7 @@ public void uploadImportFileAndExportUrlTaskLifecycle() throws Exception { // Donload file final Result inputStreamResult = cloudConvertClient.files().download(waitUrlExportTaskResponse.getResult().getFiles().get(0).get("url")); - assertThat(inputStreamResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(inputStreamResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); assertThat(MimeTypes.getDefaultMimeTypes().forName(tika.detect(inputStreamResult.getBody())).getName()).isEqualTo("image/jpeg"); } @@ -181,7 +195,7 @@ public void importTasksCreation() throws Exception { // Import url final UrlImportRequest urlImportRequest = new UrlImportRequest().setUrl("http://some-url.com").setFilename("some-filename.jpg"); final Result urlImportTaskResponseResult = cloudConvertClient.importUsing().url(urlImportRequest); - assertThat(urlImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(urlImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse urlImportTaskResponse = urlImportTaskResponseResult.getBody(); assertThat(urlImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_URL); @@ -189,7 +203,7 @@ public void importTasksCreation() throws Exception { // Import upload final UploadImportRequest uploadImportRequest = new UploadImportRequest(); final Result uploadImportTaskResponseResult = cloudConvertClient.importUsing().upload(uploadImportRequest); - assertThat(uploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(uploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse uploadImportTaskResponse = uploadImportTaskResponseResult.getBody(); assertThat(uploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); @@ -198,7 +212,7 @@ public void importTasksCreation() throws Exception { final S3ImportRequest s3ImportRequest = new S3ImportRequest().setBucket("some-bucket").setRegion("some-region") .setAccessKeyId("some-access-key-id").setSecretAccessKey("some-secret-access-key").setKey("some-key"); final Result s3ImportTaskResponseResult = cloudConvertClient.importUsing().s3(s3ImportRequest); - assertThat(s3ImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(s3ImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse s3ImportTaskResponse = s3ImportTaskResponseResult.getBody(); assertThat(s3ImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_S3); @@ -207,7 +221,7 @@ public void importTasksCreation() throws Exception { final AzureBlobImportRequest azureBlobImportRequest = new AzureBlobImportRequest().setStorageAccount("some-storage-account") .setStorageAccessKey("some-storage-access-key").setContainer("some-container").setBlob("some-blob"); final Result azureBlobImportTaskResponseResult = cloudConvertClient.importUsing().azureBlob(azureBlobImportRequest); - assertThat(azureBlobImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(azureBlobImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse azureBlobImportTaskResponse = azureBlobImportTaskResponseResult.getBody(); assertThat(azureBlobImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_AZURE_BLOB); @@ -217,7 +231,7 @@ public void importTasksCreation() throws Exception { .setProjectId("some-project-id").setBucket("some-bucket").setClientEmail("some-client-email") .setPrivateKey("some-private-key").setFile("some-file"); final Result googleCloudStorageImportTaskResponseResult = cloudConvertClient.importUsing().googleCloudStorage(googleCloudStorageImportRequest); - assertThat(googleCloudStorageImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(googleCloudStorageImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse googleCloudStorageImportTaskResponse = googleCloudStorageImportTaskResponseResult.getBody(); assertThat(googleCloudStorageImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_GOOGLE_CLOUD_STORAGE); @@ -227,7 +241,7 @@ public void importTasksCreation() throws Exception { .setAuthUrl("some-auth-url").setUsername("some-username").setPassword("some-password") .setRegion("some-region").setContainer("some-container").setFile("some-file"); final Result openStackImportTaskResponseResult = cloudConvertClient.importUsing().openStack(openStackImportRequest); - assertThat(openStackImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(openStackImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse openStackImportTaskResponse = openStackImportTaskResponseResult.getBody(); assertThat(openStackImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_OPENSTACK); @@ -236,7 +250,7 @@ public void importTasksCreation() throws Exception { final SftpImportRequest sftpImportRequest = new SftpImportRequest().setHost("some-host").setUsername("some-username") .setPassword("some-password").setFile("some-file"); final Result sftpImportTaskResponseResult = cloudConvertClient.importUsing().sftp(sftpImportRequest); - assertThat(sftpImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(sftpImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse sftpImportTaskResponse = sftpImportTaskResponseResult.getBody(); assertThat(sftpImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_SFTP); @@ -244,7 +258,7 @@ public void importTasksCreation() throws Exception { // Import Base64 final Base64ImportRequest base64ImportRequest = new Base64ImportRequest().setFile("dGVzdDEyMw==").setFilename("test.txt"); final Result base64ImportTaskResponseResult = cloudConvertClient.importUsing().base64(base64ImportRequest); - assertThat(base64ImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(base64ImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse base64ImportTaskResponse = base64ImportTaskResponseResult.getBody(); assertThat(base64ImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_BASE64); @@ -252,7 +266,7 @@ public void importTasksCreation() throws Exception { // Import Raw final RawImportRequest rawImportRequest = new RawImportRequest().setFile("content").setFilename("test.txt"); final Result rawImportTaskResponseResult = cloudConvertClient.importUsing().raw(rawImportRequest); - assertThat(rawImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(rawImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse rawImportTaskResponse = rawImportTaskResponseResult.getBody(); assertThat(rawImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_RAW); @@ -267,7 +281,7 @@ public void importTasksCreation() throws Exception { public void exportTasksCreation() throws Exception { // Import upload (immediate upload) final Result uploadImportTaskResponseResult = cloudConvertClient.importUsing().upload(new UploadImportRequest(), jpgTest1InputStream); - assertThat(uploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(uploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse uploadImportTaskResponse = uploadImportTaskResponseResult.getBody(); assertThat(uploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); @@ -275,7 +289,7 @@ public void exportTasksCreation() throws Exception { // Export url final UrlExportRequest urlExportRequest = new UrlExportRequest().setInput(uploadImportTaskResponse.getId()); final Result urlExportTaskResponseResult = cloudConvertClient.exportUsing().url(urlExportRequest); - assertThat(urlExportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(urlExportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse urlExportTaskResponse = urlExportTaskResponseResult.getBody(); assertThat(urlExportTaskResponse.getOperation()).isEqualTo(Operation.EXPORT_URL); @@ -285,7 +299,7 @@ public void exportTasksCreation() throws Exception { .setBucket("some-bucket").setRegion("some-region").setAccessKeyId("some-access-key-id") .setSecretAccessKey("some-secret-access-key").setKey("some-key"); final Result s3ExportTaskResponseResult = cloudConvertClient.exportUsing().s3(s3ExportRequest); - assertThat(s3ExportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(s3ExportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse s3ExportTaskResponse = s3ExportTaskResponseResult.getBody(); assertThat(s3ExportTaskResponse.getOperation()).isEqualTo(Operation.EXPORT_S3); @@ -295,7 +309,7 @@ public void exportTasksCreation() throws Exception { .setInput(uploadImportTaskResponse.getId()).setStorageAccount("some-storage-account") .setStorageAccessKey("some-storage-access-key").setContainer("some-container").setBlob("some-blob"); final Result azureBlobExportTaskResponseResult = cloudConvertClient.exportUsing().azureBlob(azureBlobExportRequest); - assertThat(azureBlobExportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(azureBlobExportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse azureBlobExportTaskResponse = azureBlobExportTaskResponseResult.getBody(); assertThat(azureBlobExportTaskResponse.getOperation()).isEqualTo(Operation.EXPORT_AZURE_BLOB); @@ -305,7 +319,7 @@ public void exportTasksCreation() throws Exception { .setInput(uploadImportTaskResponse.getId()).setProjectId("some-project-id") .setBucket("some-bucket").setClientEmail("some-client-email").setPrivateKey("some-private-key").setFile("some-file"); final Result googleCloudStorageExportTaskResponseResult = cloudConvertClient.exportUsing().googleCloudStorage(googleCloudStorageExportRequest); - assertThat(googleCloudStorageExportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(googleCloudStorageExportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse googleCloudStorageExportTaskResponse = googleCloudStorageExportTaskResponseResult.getBody(); assertThat(googleCloudStorageExportTaskResponse.getOperation()).isEqualTo(Operation.EXPORT_GOOGLE_CLOUD_STORAGE); @@ -315,7 +329,7 @@ public void exportTasksCreation() throws Exception { .setInput(uploadImportTaskResponse.getId()).setAuthUrl("some-auth-url").setUsername("some-username") .setPassword("some-password").setRegion("some-region").setContainer("some-container").setFile("some-file"); final Result openStackExportTaskResponseResult = cloudConvertClient.exportUsing().openStack(openStackExportRequest); - assertThat(openStackExportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(openStackExportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse openStackExportTaskResponse = openStackExportTaskResponseResult.getBody(); assertThat(openStackExportTaskResponse.getOperation()).isEqualTo(Operation.EXPORT_OPENSTACK); @@ -324,7 +338,7 @@ public void exportTasksCreation() throws Exception { final SftpExportRequest sftpExportRequest = new SftpExportRequest().setInput(uploadImportTaskResponse.getId()) .setHost("some-host").setUsername("some-username").setPassword("some-password").setFile("some-file"); final Result sftpExportTaskResponseResult = cloudConvertClient.exportUsing().sftp(sftpExportRequest); - assertThat(sftpExportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(sftpExportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse sftpExportTaskResponse = sftpExportTaskResponseResult.getBody(); assertThat(sftpExportTaskResponse.getOperation()).isEqualTo(Operation.EXPORT_SFTP); diff --git a/src/test/java/com/cloudconvert/test/integration/JobsIntegrationTest.java b/src/test/java/com/cloudconvert/test/integration/JobsIntegrationTest.java index 7f415e0..e7bf693 100644 --- a/src/test/java/com/cloudconvert/test/integration/JobsIntegrationTest.java +++ b/src/test/java/com/cloudconvert/test/integration/JobsIntegrationTest.java @@ -72,7 +72,7 @@ mergeFile1AndFile2TaskName, new MergeFilesTaskRequest().setOutputFormat(PDF).set // Create job final Result jobResponseResult = cloudConvertClient.jobs().create(tasks); - assertThat(jobResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(jobResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final JobResponse jobResponse = jobResponseResult.getBody(); assertThat(jobResponse.getTasks()).hasSize(3); @@ -91,7 +91,7 @@ mergeFile1AndFile2TaskName, new MergeFilesTaskRequest().setOutputFormat(PDF).set // Upload (actual upload file 1) final Result uploadFile1TaskResponseResult = cloudConvertClient.importUsing() .upload(uploadFile1TaskJobResponse.getId(), uploadFile1TaskJobResponse.getResult().getForm(), odtTest1InputStream); - assertThat(uploadFile1TaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(uploadFile1TaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse uploadFile1TaskResponse = uploadFile1TaskResponseResult.getBody(); assertThat(uploadFile1TaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); @@ -99,14 +99,14 @@ mergeFile1AndFile2TaskName, new MergeFilesTaskRequest().setOutputFormat(PDF).set // Upload (actual upload file 2) final Result uploadFile2TaskResponseResult = cloudConvertClient.importUsing() .upload(uploadFile2TaskJobResponse.getId(), uploadFile2TaskJobResponse.getResult().getForm(), odtTest2InputStream); - assertThat(uploadFile2TaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(uploadFile2TaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse uploadFile2TaskResponse = uploadFile2TaskResponseResult.getBody(); assertThat(uploadFile2TaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); // Wait final Result waitJobResponseResult = cloudConvertClient.jobs().wait(jobResponse.getId()); - assertThat(waitJobResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(waitJobResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final JobResponse waitJobResponse = waitJobResponseResult.getBody(); assertThat(waitJobResponse.getStatus()).isEqualTo(Status.FINISHED); @@ -114,7 +114,7 @@ mergeFile1AndFile2TaskName, new MergeFilesTaskRequest().setOutputFormat(PDF).set // Show final Result showJobResponseResult = cloudConvertClient.jobs().show(jobResponse.getId()); - assertThat(showJobResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(showJobResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final JobResponse showJobResponse = showJobResponseResult.getBody(); assertThat(showJobResponse.getStatus()).isEqualTo(Status.FINISHED); @@ -122,14 +122,14 @@ mergeFile1AndFile2TaskName, new MergeFilesTaskRequest().setOutputFormat(PDF).set // Delete job final Result deleteVoidResult = cloudConvertClient.jobs().delete(jobResponse.getId()); - assertThat(deleteVoidResult.getStatus()).isEqualTo(HttpStatus.SC_NO_CONTENT); + assertThat(deleteVoidResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_NO_CONTENT); } @Test(timeout = TIMEOUT) public void listJobsLifecycle() throws Exception { // List jobs final Result> jobResponsePageable = cloudConvertClient.jobs().list(ImmutableMap.of(), ImmutableList.of(), new Pagination(10, 1)); - assertThat(jobResponsePageable.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(jobResponsePageable.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); } @After diff --git a/src/test/java/com/cloudconvert/test/integration/TasksIntegrationTest.java b/src/test/java/com/cloudconvert/test/integration/TasksIntegrationTest.java index 7928e9c..de7c925 100644 --- a/src/test/java/com/cloudconvert/test/integration/TasksIntegrationTest.java +++ b/src/test/java/com/cloudconvert/test/integration/TasksIntegrationTest.java @@ -3,7 +3,15 @@ import com.cloudconvert.client.CloudConvertClient; import com.cloudconvert.dto.Operation; import com.cloudconvert.dto.Status; -import com.cloudconvert.dto.request.*; +import com.cloudconvert.dto.request.CaptureWebsitesTaskRequest; +import com.cloudconvert.dto.request.ConvertFilesTaskRequest; +import com.cloudconvert.dto.request.CreateArchivesTaskRequest; +import com.cloudconvert.dto.request.CreateThumbnailsTaskRequest; +import com.cloudconvert.dto.request.ExecuteCommandsTaskRequest; +import com.cloudconvert.dto.request.GetMetadataTaskRequest; +import com.cloudconvert.dto.request.OptimizeFilesTaskRequest; +import com.cloudconvert.dto.request.UploadImportRequest; +import com.cloudconvert.dto.request.WriteMetadataTaskRequest; import com.cloudconvert.dto.response.OperationResponse; import com.cloudconvert.dto.response.Pageable; import com.cloudconvert.dto.response.TaskResponse; @@ -24,7 +32,6 @@ import java.io.InputStream; import java.util.HashMap; import java.util.List; -import java.util.Map; import static org.assertj.core.api.Assertions.assertThat; @@ -55,14 +62,14 @@ public void before() throws Exception { public void convertFileTaskLifecycle() throws Exception { // Import upload (immediate upload) final Result uploadImportTaskResponseResult = cloudConvertClient.importUsing().upload(new UploadImportRequest(), jpgTest1InputStream); - assertThat(uploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(uploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse uploadImportTaskResponse = uploadImportTaskResponseResult.getBody(); assertThat(uploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); // List convert formats final Result> convertFormatsOperationResponsePageableResult = cloudConvertClient.tasks().convertFormats(); - assertThat(convertFormatsOperationResponsePageableResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(convertFormatsOperationResponsePageableResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final List operationResponses = convertFormatsOperationResponsePageableResult.getBody().getData(); assertThat(operationResponses).anySatisfy(operationResponse -> assertThat(operationResponse.getOutputFormat()).isEqualTo(JPG)); @@ -70,14 +77,14 @@ public void convertFileTaskLifecycle() throws Exception { // Convert final ConvertFilesTaskRequest convertFilesTaskRequest = new ConvertFilesTaskRequest().setInput(uploadImportTaskResponse.getId()).setInputFormat(JPG).setOutputFormat(PNG); final Result convertTaskResponseResult = cloudConvertClient.tasks().convert(convertFilesTaskRequest); - assertThat(convertTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(convertTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse convertTaskResponse = convertTaskResponseResult.getBody(); assertThat(convertTaskResponse.getOperation()).isEqualTo(Operation.CONVERT); // Wait final Result waitConvertTaskResponseResult = cloudConvertClient.tasks().wait(convertTaskResponse.getId()); - assertThat(waitConvertTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(waitConvertTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse waitConvertTaskResponse = waitConvertTaskResponseResult.getBody(); assertThat(waitConvertTaskResponse.getOperation()).isEqualTo(Operation.CONVERT); @@ -86,7 +93,7 @@ public void convertFileTaskLifecycle() throws Exception { // Show final Result showConvertTaskResponseResult = cloudConvertClient.tasks().show(convertTaskResponse.getId()); - assertThat(showConvertTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(showConvertTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse showConvertTaskResponse = showConvertTaskResponseResult.getBody(); assertThat(showConvertTaskResponse.getOperation()).isEqualTo(Operation.CONVERT); @@ -95,14 +102,14 @@ public void convertFileTaskLifecycle() throws Exception { // Delete final Result deleteVoidResult = cloudConvertClient.tasks().delete(convertTaskResponse.getId()); - assertThat(deleteVoidResult.getStatus()).isEqualTo(HttpStatus.SC_NO_CONTENT); + assertThat(deleteVoidResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_NO_CONTENT); } @Test(timeout = TIMEOUT) public void optimizeFileTaskLifecycle() throws Exception { // Import upload (immediate upload) final Result uploadImportTaskResponseResult = cloudConvertClient.importUsing().upload(new UploadImportRequest(), jpgTest1InputStream); - assertThat(uploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(uploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse uploadImportTaskResponse = uploadImportTaskResponseResult.getBody(); assertThat(uploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); @@ -110,14 +117,14 @@ public void optimizeFileTaskLifecycle() throws Exception { // Optimize final OptimizeFilesTaskRequest optimizeFilesTaskRequest = new OptimizeFilesTaskRequest().setInput(uploadImportTaskResponse.getId()).setInputFormat(JPG); final Result optimizeTaskResponseResult = cloudConvertClient.tasks().optimize(optimizeFilesTaskRequest); - assertThat(optimizeTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(optimizeTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse optimizeTaskResponse = optimizeTaskResponseResult.getBody(); assertThat(optimizeTaskResponse.getOperation()).isEqualTo(Operation.OPTIMIZE); // Wait final Result waitOptimizeTaskResponseResult = cloudConvertClient.tasks().wait(optimizeTaskResponse.getId()); - assertThat(waitOptimizeTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(waitOptimizeTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse waitOptimizeTaskResponse = waitOptimizeTaskResponseResult.getBody(); assertThat(waitOptimizeTaskResponse.getOperation()).isEqualTo(Operation.OPTIMIZE); @@ -126,7 +133,7 @@ public void optimizeFileTaskLifecycle() throws Exception { // Show final Result showOptimizeTaskResponseResult = cloudConvertClient.tasks().show(optimizeTaskResponse.getId()); - assertThat(showOptimizeTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(showOptimizeTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse showOptimizeTaskResponse = showOptimizeTaskResponseResult.getBody(); assertThat(showOptimizeTaskResponse.getOperation()).isEqualTo(Operation.OPTIMIZE); @@ -135,7 +142,7 @@ public void optimizeFileTaskLifecycle() throws Exception { // Delete final Result deleteVoidResult = cloudConvertClient.tasks().delete(optimizeTaskResponse.getId()); - assertThat(deleteVoidResult.getStatus()).isEqualTo(HttpStatus.SC_NO_CONTENT); + assertThat(deleteVoidResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_NO_CONTENT); } @Test(timeout = TIMEOUT) @@ -143,14 +150,14 @@ public void captureWebsiteTaskLifecycle() throws Exception { // Capture final CaptureWebsitesTaskRequest captureWebsitesTaskRequest = new CaptureWebsitesTaskRequest().setUrl(URL).setOutputFormat(PDF); final Result captureTaskResponseResult = cloudConvertClient.tasks().capture(captureWebsitesTaskRequest); - assertThat(captureTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(captureTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse captureTaskResponse = captureTaskResponseResult.getBody(); assertThat(captureTaskResponse.getOperation()).isEqualTo(Operation.CAPTURE_WEBSITE); // Wait final Result waitCaptureTaskResponseResult = cloudConvertClient.tasks().wait(captureTaskResponse.getId()); - assertThat(waitCaptureTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(waitCaptureTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse waitCaptureTaskResponse = waitCaptureTaskResponseResult.getBody(); assertThat(waitCaptureTaskResponse.getOperation()).isEqualTo(Operation.CAPTURE_WEBSITE); @@ -159,7 +166,7 @@ public void captureWebsiteTaskLifecycle() throws Exception { // Show final Result showCaptureTaskResponseResult = cloudConvertClient.tasks().show(captureTaskResponse.getId()); - assertThat(showCaptureTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(showCaptureTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse showCaptureTaskResponse = showCaptureTaskResponseResult.getBody(); assertThat(showCaptureTaskResponse.getOperation()).isEqualTo(Operation.CAPTURE_WEBSITE); @@ -168,14 +175,14 @@ public void captureWebsiteTaskLifecycle() throws Exception { // Delete final Result deleteVoidResult = cloudConvertClient.tasks().delete(captureTaskResponse.getId()); - assertThat(deleteVoidResult.getStatus()).isEqualTo(HttpStatus.SC_NO_CONTENT); + assertThat(deleteVoidResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_NO_CONTENT); } @Test(timeout = TIMEOUT) public void createArchiveTaskLifecycle() throws Exception { // Import upload (immediate upload) final Result uploadImportTaskResponseResult = cloudConvertClient.importUsing().upload(new UploadImportRequest(), jpgTest1InputStream); - assertThat(uploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(uploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse uploadImportTaskResponse = uploadImportTaskResponseResult.getBody(); assertThat(uploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); @@ -183,14 +190,14 @@ public void createArchiveTaskLifecycle() throws Exception { // Archive final CreateArchivesTaskRequest createArchivesTaskRequest = new CreateArchivesTaskRequest().setInput(uploadImportTaskResponse.getId()).setOutputFormat(ZIP); final Result archiveTaskResponseResult = cloudConvertClient.tasks().archive(createArchivesTaskRequest); - assertThat(archiveTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(archiveTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse archiveTaskResponse = archiveTaskResponseResult.getBody(); assertThat(archiveTaskResponse.getOperation()).isEqualTo(Operation.ARCHIVE); // Wait final Result waitArchiveTaskResponseResult = cloudConvertClient.tasks().wait(archiveTaskResponse.getId()); - assertThat(waitArchiveTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(waitArchiveTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse waitArchiveTaskResponse = waitArchiveTaskResponseResult.getBody(); assertThat(waitArchiveTaskResponse.getOperation()).isEqualTo(Operation.ARCHIVE); @@ -199,7 +206,7 @@ public void createArchiveTaskLifecycle() throws Exception { // Show final Result showArchiveTaskResponseResult = cloudConvertClient.tasks().show(archiveTaskResponse.getId()); - assertThat(showArchiveTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(showArchiveTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse showArchiveTaskResponse = showArchiveTaskResponseResult.getBody(); assertThat(showArchiveTaskResponse.getOperation()).isEqualTo(Operation.ARCHIVE); @@ -208,14 +215,14 @@ public void createArchiveTaskLifecycle() throws Exception { // Delete final Result deleteVoidResult = cloudConvertClient.tasks().delete(archiveTaskResponse.getId()); - assertThat(deleteVoidResult.getStatus()).isEqualTo(HttpStatus.SC_NO_CONTENT); + assertThat(deleteVoidResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_NO_CONTENT); } @Test(timeout = TIMEOUT) public void executeCommandTaskLifecycle() throws Exception { // Import upload (immediate upload) final Result uploadImportTaskResponseResult = cloudConvertClient.importUsing().upload(new UploadImportRequest(), jpgTest1InputStream); - assertThat(uploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(uploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse uploadImportTaskResponse = uploadImportTaskResponseResult.getBody(); assertThat(uploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); @@ -225,14 +232,14 @@ public void executeCommandTaskLifecycle() throws Exception { .setInput(uploadImportTaskResponse.getId()).setEngine(ExecuteCommandsTaskRequest.Engine.GRAPHICSMAGICK) .setCommand(ExecuteCommandsTaskRequest.Command.GM).setArguments("version"); final Result executeTaskResponseResult = cloudConvertClient.tasks().command(executeCommandsTaskRequest); - assertThat(executeTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(executeTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse executeTaskResponse = executeTaskResponseResult.getBody(); assertThat(executeTaskResponse.getOperation()).isEqualTo(Operation.COMMAND); // Wait final Result waitExecuteTaskResponseResult = cloudConvertClient.tasks().wait(executeTaskResponse.getId()); - assertThat(waitExecuteTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(waitExecuteTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse waitExecuteTaskResponse = waitExecuteTaskResponseResult.getBody(); assertThat(waitExecuteTaskResponse.getOperation()).isEqualTo(Operation.COMMAND); @@ -241,7 +248,7 @@ public void executeCommandTaskLifecycle() throws Exception { // Show final Result showExecuteTaskResponseResult = cloudConvertClient.tasks().show(executeTaskResponse.getId()); - assertThat(showExecuteTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(showExecuteTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse showExecuteTaskResponse = showExecuteTaskResponseResult.getBody(); assertThat(showExecuteTaskResponse.getOperation()).isEqualTo(Operation.COMMAND); @@ -250,14 +257,14 @@ public void executeCommandTaskLifecycle() throws Exception { // Delete final Result deleteVoidResult = cloudConvertClient.tasks().delete(executeTaskResponse.getId()); - assertThat(deleteVoidResult.getStatus()).isEqualTo(HttpStatus.SC_NO_CONTENT); + assertThat(deleteVoidResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_NO_CONTENT); } @Test(timeout = TIMEOUT) public void thumbnailFileTaskLifecycle() throws Exception { // Import upload (immediate upload) final Result uploadImportTaskResponseResult = cloudConvertClient.importUsing().upload(new UploadImportRequest(), jpgTest1InputStream); - assertThat(uploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(uploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse uploadImportTaskResponse = uploadImportTaskResponseResult.getBody(); assertThat(uploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); @@ -265,14 +272,14 @@ public void thumbnailFileTaskLifecycle() throws Exception { // Thumbnail final CreateThumbnailsTaskRequest createThumbnailsTaskRequest = new CreateThumbnailsTaskRequest().setInput(uploadImportTaskResponse.getId()).setInputFormat(JPG).setOutputFormat(PNG); final Result thumbnailTaskResponseResult = cloudConvertClient.tasks().thumbnail(createThumbnailsTaskRequest); - assertThat(thumbnailTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(thumbnailTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse thumbnailTaskResponse = thumbnailTaskResponseResult.getBody(); assertThat(thumbnailTaskResponse.getOperation()).isEqualTo(Operation.THUMBNAIL); // Wait final Result waitThumbnailTaskResponseResult = cloudConvertClient.tasks().wait(thumbnailTaskResponse.getId()); - assertThat(waitThumbnailTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(waitThumbnailTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse waitThumbnailTaskResponse = waitThumbnailTaskResponseResult.getBody(); assertThat(waitThumbnailTaskResponse.getOperation()).isEqualTo(Operation.THUMBNAIL); @@ -281,7 +288,7 @@ public void thumbnailFileTaskLifecycle() throws Exception { // Show final Result showThumbnailTaskResponseResult = cloudConvertClient.tasks().show(thumbnailTaskResponse.getId()); - assertThat(showThumbnailTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(showThumbnailTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse showThumbnailTaskResponse = showThumbnailTaskResponseResult.getBody(); assertThat(showThumbnailTaskResponse.getOperation()).isEqualTo(Operation.THUMBNAIL); @@ -290,7 +297,7 @@ public void thumbnailFileTaskLifecycle() throws Exception { // Delete final Result deleteVoidResult = cloudConvertClient.tasks().delete(thumbnailTaskResponse.getId()); - assertThat(deleteVoidResult.getStatus()).isEqualTo(HttpStatus.SC_NO_CONTENT); + assertThat(deleteVoidResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_NO_CONTENT); } @@ -298,7 +305,7 @@ public void thumbnailFileTaskLifecycle() throws Exception { public void getMetadataTaskLifecycle() throws Exception { // Import upload (immediate upload) final Result uploadImportTaskResponseResult = cloudConvertClient.importUsing().upload(new UploadImportRequest(), jpgTest1InputStream); - assertThat(uploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(uploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse uploadImportTaskResponse = uploadImportTaskResponseResult.getBody(); assertThat(uploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); @@ -306,14 +313,14 @@ public void getMetadataTaskLifecycle() throws Exception { // Metadata final GetMetadataTaskRequest getMetadataTaskRequest = new GetMetadataTaskRequest().setInput(uploadImportTaskResponse.getId()).setInputFormat(JPG); final Result metadataTaskResponseResult = cloudConvertClient.tasks().metadata(getMetadataTaskRequest); - assertThat(metadataTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(metadataTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse metadataTaskResponse = metadataTaskResponseResult.getBody(); assertThat(metadataTaskResponse.getOperation()).isEqualTo(Operation.METADATA); // Wait final Result waitMetadataTaskResponseResult = cloudConvertClient.tasks().wait(metadataTaskResponse.getId()); - assertThat(waitMetadataTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(waitMetadataTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse waitMetadataTaskResponse = waitMetadataTaskResponseResult.getBody(); assertThat(waitMetadataTaskResponse.getOperation()).isEqualTo(Operation.METADATA); @@ -322,7 +329,7 @@ public void getMetadataTaskLifecycle() throws Exception { // Show final Result showMetadataTaskResponseResult = cloudConvertClient.tasks().show(metadataTaskResponse.getId()); - assertThat(showMetadataTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(showMetadataTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse showMetadataTaskResponse = showMetadataTaskResponseResult.getBody(); assertThat(showMetadataTaskResponse.getOperation()).isEqualTo(Operation.METADATA); @@ -332,7 +339,7 @@ public void getMetadataTaskLifecycle() throws Exception { // Delete final Result deleteVoidResult = cloudConvertClient.tasks().delete(metadataTaskResponse.getId()); - assertThat(deleteVoidResult.getStatus()).isEqualTo(HttpStatus.SC_NO_CONTENT); + assertThat(deleteVoidResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_NO_CONTENT); } @@ -340,27 +347,27 @@ public void getMetadataTaskLifecycle() throws Exception { public void writeMetadataTaskLifecycle() throws Exception { // Import upload (immediate upload) final Result uploadImportTaskResponseResult = cloudConvertClient.importUsing().upload(new UploadImportRequest(), jpgTest1InputStream); - assertThat(uploadImportTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(uploadImportTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse uploadImportTaskResponse = uploadImportTaskResponseResult.getBody(); assertThat(uploadImportTaskResponse.getOperation()).isEqualTo(Operation.IMPORT_UPLOAD); // Write Metadata final WriteMetadataTaskRequest writeMetadataTaskRequest = new WriteMetadataTaskRequest() - .setInput(uploadImportTaskResponse.getId()) - .setInputFormat(JPG) - .setMetadata(new HashMap() {{ - put("Author", "CloudConvert"); - }}); + .setInput(uploadImportTaskResponse.getId()) + .setInputFormat(JPG) + .setMetadata(new HashMap() {{ + put("Author", "CloudConvert"); + }}); final Result writeMetadataTaskResponseResult = cloudConvertClient.tasks().writeMetadata(writeMetadataTaskRequest); - assertThat(writeMetadataTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(writeMetadataTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); final TaskResponse writeMetadataTaskResponse = writeMetadataTaskResponseResult.getBody(); assertThat(writeMetadataTaskResponse.getOperation()).isEqualTo(Operation.METADATA_WRITE); // Wait final Result waitWriteMetadataTaskResponseResult = cloudConvertClient.tasks().wait(writeMetadataTaskResponse.getId()); - assertThat(waitWriteMetadataTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(waitWriteMetadataTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse waitWriteMetadataTaskResponse = waitWriteMetadataTaskResponseResult.getBody(); assertThat(waitWriteMetadataTaskResponse.getOperation()).isEqualTo(Operation.METADATA_WRITE); @@ -369,7 +376,7 @@ public void writeMetadataTaskLifecycle() throws Exception { // Show final Result showWriteMetadataTaskResponseResult = cloudConvertClient.tasks().show(writeMetadataTaskResponse.getId()); - assertThat(showWriteMetadataTaskResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(showWriteMetadataTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); final TaskResponse showWriteMetadataTaskResponse = showWriteMetadataTaskResponseResult.getBody(); assertThat(showWriteMetadataTaskResponse.getOperation()).isEqualTo(Operation.METADATA_WRITE); @@ -378,20 +385,18 @@ public void writeMetadataTaskLifecycle() throws Exception { // Delete final Result deleteVoidResult = cloudConvertClient.tasks().delete(writeMetadataTaskResponse.getId()); - assertThat(deleteVoidResult.getStatus()).isEqualTo(HttpStatus.SC_NO_CONTENT); + assertThat(deleteVoidResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_NO_CONTENT); } - - @Test(timeout = TIMEOUT) public void listTasksLifecycle() throws Exception { // List operations final Result> operationResponsePageable = cloudConvertClient.tasks().operations(); - assertThat(operationResponsePageable.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(operationResponsePageable.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); // List tasks final Result> taskResponsePageable = cloudConvertClient.tasks().list(ImmutableMap.of(), ImmutableList.of(), new Pagination(100, 1)); - assertThat(taskResponsePageable.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(taskResponsePageable.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); } @After diff --git a/src/test/java/com/cloudconvert/test/integration/WebhooksIntegrationTest.java b/src/test/java/com/cloudconvert/test/integration/WebhooksIntegrationTest.java index 9306d1f..388611e 100644 --- a/src/test/java/com/cloudconvert/test/integration/WebhooksIntegrationTest.java +++ b/src/test/java/com/cloudconvert/test/integration/WebhooksIntegrationTest.java @@ -37,7 +37,7 @@ public void before() throws Exception { @Test(timeout = TIMEOUT) public void userLifecycle() throws Exception { final Result userResponseResult = cloudConvertClient.users().me(); - assertThat(userResponseResult.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(userResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); assertThat(userResponseResult.getBody()).isNotNull(); } @@ -47,7 +47,7 @@ public void webhooksLifecycle() throws Exception { final WebhookRequest webhookRequest = new WebhookRequest().setUrl("http://some-url.com") .setEvents(ImmutableList.of(Event.JOB_CREATED, Event.JOB_FAILED, Event.JOB_FINISHED)); final Result createWebhookResponseResult = cloudConvertClient.webhooks().create(webhookRequest); - assertThat(createWebhookResponseResult.getStatus()).isEqualTo(HttpStatus.SC_CREATED); + assertThat(createWebhookResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); assertThat(createWebhookResponseResult.getBody()).isNotNull(); final WebhookResponse createWebhookResponse = createWebhookResponseResult.getBody(); @@ -55,11 +55,11 @@ public void webhooksLifecycle() throws Exception { // List final Result> webhookResponsePageable = cloudConvertClient.webhooks().list(); - assertThat(webhookResponsePageable.getStatus()).isEqualTo(HttpStatus.SC_OK); + assertThat(webhookResponsePageable.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); // Delete final Result deleteWebhookResponseResult = cloudConvertClient.webhooks().delete(createWebhookResponse.getId()); - assertThat(deleteWebhookResponseResult.getStatus()).isEqualTo(HttpStatus.SC_NO_CONTENT); + assertThat(deleteWebhookResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_NO_CONTENT); // Verify assertThat(cloudConvertClient.webhooks().verify(WEBHOOK_PAYLOAD, WEBHOOK_SIGNATURE)).isTrue(); diff --git a/src/test/java/com/cloudconvert/test/unit/AsyncImportsUnitTest.java b/src/test/java/com/cloudconvert/test/unit/AsyncImportsUnitTest.java index 3d57d4c..8c75dac 100644 --- a/src/test/java/com/cloudconvert/test/unit/AsyncImportsUnitTest.java +++ b/src/test/java/com/cloudconvert/test/unit/AsyncImportsUnitTest.java @@ -3,12 +3,21 @@ import com.cloudconvert.client.AsyncCloudConvertClient; import com.cloudconvert.client.mapper.ObjectMapperProvider; import com.cloudconvert.client.setttings.SettingsProvider; -import com.cloudconvert.dto.request.*; +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; +import com.cloudconvert.dto.request.UrlImportRequest; import com.cloudconvert.dto.response.TaskResponse; import com.cloudconvert.dto.result.AsyncResult; import com.cloudconvert.dto.result.CompletedAsyncResult; import com.cloudconvert.dto.result.FutureAsyncResult; import com.cloudconvert.dto.result.Result; +import com.cloudconvert.dto.result.Status; import com.cloudconvert.executor.AsyncRequestExecutor; import com.cloudconvert.resource.AbstractResource; import com.cloudconvert.test.framework.AbstractTest; @@ -132,10 +141,10 @@ public void import_upload_immediateUpload() throws Exception { final AsyncResult showTaskResponseAsyncResult = FutureAsyncResult.builder().build(); when(asyncRequestExecutor.execute(any(HttpUriRequest.class), eq(AbstractResource.TASK_RESPONSE_TYPE_REFERENCE))) .thenReturn(CompletedAsyncResult.builder().result( - Result.builder().status(HttpStatus.SC_CREATED).body(taskResponse).build()).build()) + Result.builder().status(Status.builder().code(HttpStatus.SC_CREATED).build()).body(taskResponse).build()).build()) .thenReturn(showTaskResponseAsyncResult); when(asyncRequestExecutor.execute(any(HttpUriRequest.class), eq(AbstractResource.VOID_TYPE_REFERENCE))).thenReturn( - CompletedAsyncResult.builder().result(Result.builder().status(HttpStatus.SC_CREATED).build()).build()); + CompletedAsyncResult.builder().result(Result.builder().status(Status.builder().code(HttpStatus.SC_CREATED).build()).build()).build()); assertThat(asyncCloudConvertClient.importUsing().upload(expectedUploadImportRequest, inputStream)).isEqualTo(showTaskResponseAsyncResult); verify(asyncRequestExecutor, times(2)).execute(any(HttpUriRequest.class), eq(AbstractResource.TASK_RESPONSE_TYPE_REFERENCE)); @@ -282,8 +291,9 @@ public void import_sftp() throws Exception { assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_USER_AGENT)).hasSize(1).allSatisfy(header -> assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); } + @Test - public void import_base64() throws Exception{ + public void import_base64() throws Exception { final Base64ImportRequest expectedBase64ImportRequest = new Base64ImportRequest().setFile("some-file").setFilename("test.txt"); final AsyncResult taskResponseAsyncResult = FutureAsyncResult.builder().build(); @@ -298,18 +308,18 @@ public void import_base64() throws Exception{ assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_URL + "/" + AbstractResource.V2 + "/import/base64"); assertThat(httpUriRequest).isInstanceOfSatisfying(HttpEntityEnclosingRequestBase.class, httpEntityEnclosingRequestBase -> { final Base64ImportRequest actualBase64ImportRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() - .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), Base64ImportRequest.class)).get(); + .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), Base64ImportRequest.class)).get(); assertThat(actualBase64ImportRequest.getFilename()).isEqualTo(actualBase64ImportRequest.getFilename()); }); assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> - assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); + assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_USER_AGENT)).hasSize(1).allSatisfy(header -> - assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); + assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); } @Test - public void import_raw() throws Exception{ + public void import_raw() throws Exception { final RawImportRequest expectedRawImportRequest = new RawImportRequest().setFile("content").setFilename("test.txt"); final AsyncResult taskResponseAsyncResult = FutureAsyncResult.builder().build(); @@ -324,14 +334,14 @@ public void import_raw() throws Exception{ assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_URL + "/" + AbstractResource.V2 + "/import/raw"); assertThat(httpUriRequest).isInstanceOfSatisfying(HttpEntityEnclosingRequestBase.class, httpEntityEnclosingRequestBase -> { final RawImportRequest actualRawImportRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() - .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), RawImportRequest.class)).get(); + .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), RawImportRequest.class)).get(); assertThat(actualRawImportRequest.getFilename()).isEqualTo(actualRawImportRequest.getFilename()); }); assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> - assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); + assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_USER_AGENT)).hasSize(1).allSatisfy(header -> - assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); + assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); } @After diff --git a/src/test/java/com/cloudconvert/test/unit/AsyncTasksUnitTest.java b/src/test/java/com/cloudconvert/test/unit/AsyncTasksUnitTest.java index 81ba66f..31faa53 100644 --- a/src/test/java/com/cloudconvert/test/unit/AsyncTasksUnitTest.java +++ b/src/test/java/com/cloudconvert/test/unit/AsyncTasksUnitTest.java @@ -3,7 +3,15 @@ import com.cloudconvert.client.AsyncCloudConvertClient; import com.cloudconvert.client.mapper.ObjectMapperProvider; import com.cloudconvert.client.setttings.SettingsProvider; -import com.cloudconvert.dto.request.*; +import com.cloudconvert.dto.request.CaptureWebsitesTaskRequest; +import com.cloudconvert.dto.request.ConvertFilesTaskRequest; +import com.cloudconvert.dto.request.CreateArchivesTaskRequest; +import com.cloudconvert.dto.request.CreateThumbnailsTaskRequest; +import com.cloudconvert.dto.request.ExecuteCommandsTaskRequest; +import com.cloudconvert.dto.request.GetMetadataTaskRequest; +import com.cloudconvert.dto.request.MergeFilesTaskRequest; +import com.cloudconvert.dto.request.OptimizeFilesTaskRequest; +import com.cloudconvert.dto.request.WriteMetadataTaskRequest; import com.cloudconvert.dto.response.OperationResponse; import com.cloudconvert.dto.response.Pageable; import com.cloudconvert.dto.response.TaskResponse; @@ -508,14 +516,14 @@ public void tasks_thumbnail() throws Exception { assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_URL + "/" + AbstractResource.V2 + "/thumbnail"); assertThat(httpUriRequest).isInstanceOfSatisfying(HttpEntityEnclosingRequestBase.class, httpEntityEnclosingRequestBase -> { final ExecuteCommandsTaskRequest actualExecuteCommandsTaskRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() - .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), ExecuteCommandsTaskRequest.class)).get(); + .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), ExecuteCommandsTaskRequest.class)).get(); assertThat(actualExecuteCommandsTaskRequest.getInput()).isEqualTo(expectedCreateThumbnailsTaskRequest.getInput()); }); assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> - assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); + assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_USER_AGENT)).hasSize(1).allSatisfy(header -> - assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); + assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); } @@ -535,14 +543,14 @@ public void tasks_metadata() throws Exception { assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_URL + "/" + AbstractResource.V2 + "/metadata"); assertThat(httpUriRequest).isInstanceOfSatisfying(HttpEntityEnclosingRequestBase.class, httpEntityEnclosingRequestBase -> { final ExecuteCommandsTaskRequest actualExecuteCommandsTaskRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() - .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), ExecuteCommandsTaskRequest.class)).get(); + .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), ExecuteCommandsTaskRequest.class)).get(); assertThat(actualExecuteCommandsTaskRequest.getInput()).isEqualTo(expectedGetMetadataTaskRequest.getInput()); }); assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> - assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); + assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_USER_AGENT)).hasSize(1).allSatisfy(header -> - assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); + assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); } @Test @@ -561,14 +569,14 @@ public void tasks_metadata_write() throws Exception { assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_URL + "/" + AbstractResource.V2 + "/metadata/write"); assertThat(httpUriRequest).isInstanceOfSatisfying(HttpEntityEnclosingRequestBase.class, httpEntityEnclosingRequestBase -> { final ExecuteCommandsTaskRequest actualExecuteCommandsTaskRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() - .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), ExecuteCommandsTaskRequest.class)).get(); + .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), ExecuteCommandsTaskRequest.class)).get(); assertThat(actualExecuteCommandsTaskRequest.getInput()).isEqualTo(expectedWriteMetadataTaskRequest.getInput()); }); assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> - assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); + assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_USER_AGENT)).hasSize(1).allSatisfy(header -> - assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); + assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); } diff --git a/src/test/java/com/cloudconvert/test/unit/ImportsUnitTest.java b/src/test/java/com/cloudconvert/test/unit/ImportsUnitTest.java index 4151b78..bad64a6 100644 --- a/src/test/java/com/cloudconvert/test/unit/ImportsUnitTest.java +++ b/src/test/java/com/cloudconvert/test/unit/ImportsUnitTest.java @@ -3,9 +3,18 @@ import com.cloudconvert.client.CloudConvertClient; import com.cloudconvert.client.mapper.ObjectMapperProvider; import com.cloudconvert.client.setttings.SettingsProvider; -import com.cloudconvert.dto.request.*; +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; +import com.cloudconvert.dto.request.UrlImportRequest; import com.cloudconvert.dto.response.TaskResponse; import com.cloudconvert.dto.result.Result; +import com.cloudconvert.dto.result.Status; import com.cloudconvert.executor.RequestExecutor; import com.cloudconvert.resource.AbstractResource; import com.cloudconvert.test.framework.AbstractTest; @@ -128,9 +137,10 @@ public void import_upload_immediateUpload() throws Exception { new TaskResponse.Result().setForm(new TaskResponse.Result.Form().setUrl("import-upload-task-result-form-url").setParameters(parameters))); final Result showTaskResponseResult = Result.builder().build(); when(requestExecutor.execute(any(HttpUriRequest.class), eq(AbstractResource.TASK_RESPONSE_TYPE_REFERENCE))) - .thenReturn(Result.builder().status(HttpStatus.SC_CREATED).body(taskResponse).build()).thenReturn(showTaskResponseResult); + .thenReturn(Result.builder().status(Status.builder().code(HttpStatus.SC_CREATED).build()).body(taskResponse).build()) + .thenReturn(showTaskResponseResult); when(requestExecutor.execute(any(HttpUriRequest.class), eq(AbstractResource.VOID_TYPE_REFERENCE))) - .thenReturn(Result.builder().status(HttpStatus.SC_CREATED).build()); + .thenReturn(Result.builder().status(Status.builder().code(HttpStatus.SC_CREATED).build()).build()); assertThat(cloudConvertClient.importUsing().upload(expectedUploadImportRequest, inputStream)).isEqualTo(showTaskResponseResult); verify(requestExecutor, times(2)).execute(any(HttpUriRequest.class), eq(AbstractResource.TASK_RESPONSE_TYPE_REFERENCE)); @@ -279,7 +289,7 @@ public void import_sftp() throws Exception { } @Test - public void import_base64() throws Exception{ + public void import_base64() throws Exception { final Base64ImportRequest expectedBase64ImportRequest = new Base64ImportRequest().setFile("some-file").setFilename("test.txt"); final Result taskResponseResult = Result.builder().build(); @@ -294,18 +304,18 @@ public void import_base64() throws Exception{ assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_URL + "/" + AbstractResource.V2 + "/import/base64"); assertThat(httpUriRequest).isInstanceOfSatisfying(HttpEntityEnclosingRequestBase.class, httpEntityEnclosingRequestBase -> { final Base64ImportRequest actualBase64ImportRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() - .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), Base64ImportRequest.class)).get(); + .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), Base64ImportRequest.class)).get(); assertThat(actualBase64ImportRequest.getFilename()).isEqualTo(actualBase64ImportRequest.getFilename()); }); assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> - assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); + assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_USER_AGENT)).hasSize(1).allSatisfy(header -> - assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); - } + assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); + } @Test - public void import_raw() throws Exception{ + public void import_raw() throws Exception { final RawImportRequest expectedRawImportRequest = new RawImportRequest().setFile("content").setFilename("test.txt"); final Result taskResponseResult = Result.builder().build(); @@ -320,14 +330,14 @@ public void import_raw() throws Exception{ assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_URL + "/" + AbstractResource.V2 + "/import/raw"); assertThat(httpUriRequest).isInstanceOfSatisfying(HttpEntityEnclosingRequestBase.class, httpEntityEnclosingRequestBase -> { final RawImportRequest actualRawImportRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() - .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), RawImportRequest.class)).get(); + .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), RawImportRequest.class)).get(); assertThat(actualRawImportRequest.getFilename()).isEqualTo(actualRawImportRequest.getFilename()); }); assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> - assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); + assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_USER_AGENT)).hasSize(1).allSatisfy(header -> - assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); + assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); } @After diff --git a/src/test/java/com/cloudconvert/test/unit/TasksUnitTest.java b/src/test/java/com/cloudconvert/test/unit/TasksUnitTest.java index 19d171e..9512745 100644 --- a/src/test/java/com/cloudconvert/test/unit/TasksUnitTest.java +++ b/src/test/java/com/cloudconvert/test/unit/TasksUnitTest.java @@ -3,7 +3,15 @@ import com.cloudconvert.client.CloudConvertClient; import com.cloudconvert.client.mapper.ObjectMapperProvider; import com.cloudconvert.client.setttings.SettingsProvider; -import com.cloudconvert.dto.request.*; +import com.cloudconvert.dto.request.CaptureWebsitesTaskRequest; +import com.cloudconvert.dto.request.ConvertFilesTaskRequest; +import com.cloudconvert.dto.request.CreateArchivesTaskRequest; +import com.cloudconvert.dto.request.CreateThumbnailsTaskRequest; +import com.cloudconvert.dto.request.ExecuteCommandsTaskRequest; +import com.cloudconvert.dto.request.GetMetadataTaskRequest; +import com.cloudconvert.dto.request.MergeFilesTaskRequest; +import com.cloudconvert.dto.request.OptimizeFilesTaskRequest; +import com.cloudconvert.dto.request.WriteMetadataTaskRequest; import com.cloudconvert.dto.response.OperationResponse; import com.cloudconvert.dto.response.Pageable; import com.cloudconvert.dto.response.TaskResponse; @@ -507,14 +515,14 @@ public void tasks_thumbnail() throws Exception { assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_URL + "/" + AbstractResource.V2 + "/thumbnail"); assertThat(httpUriRequest).isInstanceOfSatisfying(HttpEntityEnclosingRequestBase.class, httpEntityEnclosingRequestBase -> { final ExecuteCommandsTaskRequest actualExecuteCommandsTaskRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() - .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), ExecuteCommandsTaskRequest.class)).get(); + .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), ExecuteCommandsTaskRequest.class)).get(); assertThat(actualExecuteCommandsTaskRequest.getInput()).isEqualTo(expectedCreateThumbnailsTaskRequest.getInput()); }); assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> - assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); + assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_USER_AGENT)).hasSize(1).allSatisfy(header -> - assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); + assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); } @Test @@ -533,14 +541,14 @@ public void tasks_metadata() throws Exception { assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_URL + "/" + AbstractResource.V2 + "/metadata"); assertThat(httpUriRequest).isInstanceOfSatisfying(HttpEntityEnclosingRequestBase.class, httpEntityEnclosingRequestBase -> { final ExecuteCommandsTaskRequest actualExecuteCommandsTaskRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() - .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), ExecuteCommandsTaskRequest.class)).get(); + .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), ExecuteCommandsTaskRequest.class)).get(); assertThat(actualExecuteCommandsTaskRequest.getInput()).isEqualTo(expectedGetMetadataTaskRequest.getInput()); }); assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> - assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); + assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_USER_AGENT)).hasSize(1).allSatisfy(header -> - assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); + assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); } @Test @@ -559,14 +567,14 @@ public void tasks_write_metadata() throws Exception { assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_URL + "/" + AbstractResource.V2 + "/metadata/write"); assertThat(httpUriRequest).isInstanceOfSatisfying(HttpEntityEnclosingRequestBase.class, httpEntityEnclosingRequestBase -> { final ExecuteCommandsTaskRequest actualExecuteCommandsTaskRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() - .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), ExecuteCommandsTaskRequest.class)).get(); + .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), ExecuteCommandsTaskRequest.class)).get(); assertThat(actualExecuteCommandsTaskRequest.getInput()).isEqualTo(expectedWriteMetadataTaskRequest.getInput()); }); assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> - assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); + assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_USER_AGENT)).hasSize(1).allSatisfy(header -> - assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); + assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); } diff --git a/src/test/resources/invalid-application.properties b/src/test/resources/invalid-application.properties new file mode 100644 index 0000000..62e2f97 --- /dev/null +++ b/src/test/resources/invalid-application.properties @@ -0,0 +1,3 @@ +CLOUDCONVERT_API_KEY=invalid-api-key +CLOUDCONVERT_SANDBOX=true +CLOUDCONVERT_WEBHOOK_SIGNING_SECRET=invalid-webhook-signing-secret From a8ba651d49b7b18476767e27cfc25354fdb96b0d Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Fri, 3 Dec 2021 13:06:23 +0100 Subject: [PATCH 31/51] adjust error handling tests --- .../integration/AsyncCloudConvertClientExceptionTest.java | 6 +++--- .../test/integration/CloudConvertClientExceptionTest.java | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/test/java/com/cloudconvert/test/integration/AsyncCloudConvertClientExceptionTest.java b/src/test/java/com/cloudconvert/test/integration/AsyncCloudConvertClientExceptionTest.java index c1917ad..ac7fcb6 100644 --- a/src/test/java/com/cloudconvert/test/integration/AsyncCloudConvertClientExceptionTest.java +++ b/src/test/java/com/cloudconvert/test/integration/AsyncCloudConvertClientExceptionTest.java @@ -46,7 +46,7 @@ public void unauthorized() throws Exception { assertThat(cloudConvertClientException.getStatus().getCode()).isEqualTo(HttpStatus.SC_UNAUTHORIZED); assertThat(cloudConvertClientException.getStatus().getReason()).isEqualTo("Unauthorized"); - assertThat(cloudConvertClientException.getHeaders()).hasSize(6); + assertThat(cloudConvertClientException.getHeaders()).containsKey("Content-Type"); assertThat(cloudConvertClientException.getBody().getCode()).isEqualTo("UNAUTHENTICATED"); assertThat(cloudConvertClientException.getBody().getMessage()).isEqualTo("Unauthenticated."); } @@ -58,10 +58,10 @@ public void unprocessableEntity() throws Exception { assertThat(cloudConvertClientException.getStatus().getCode()).isEqualTo(HttpStatus.SC_UNPROCESSABLE_ENTITY); assertThat(cloudConvertClientException.getStatus().getReason()).isEqualTo("Unprocessable Entity"); - assertThat(cloudConvertClientException.getHeaders()).hasSize(8); + assertThat(cloudConvertClientException.getHeaders()).containsKey("Content-Type"); assertThat(cloudConvertClientException.getBody().getCode()).isEqualTo("INVALID_DATA"); assertThat(cloudConvertClientException.getBody().getMessage()).isEqualTo("The given data was invalid."); - assertThat(cloudConvertClientException.getBody().getErrors()).hasSize(1); + assertThat(cloudConvertClientException.getBody().getErrors()).containsKey("tasks"); } @After diff --git a/src/test/java/com/cloudconvert/test/integration/CloudConvertClientExceptionTest.java b/src/test/java/com/cloudconvert/test/integration/CloudConvertClientExceptionTest.java index d0a764b..c762fd2 100644 --- a/src/test/java/com/cloudconvert/test/integration/CloudConvertClientExceptionTest.java +++ b/src/test/java/com/cloudconvert/test/integration/CloudConvertClientExceptionTest.java @@ -46,7 +46,7 @@ public void unauthorized() throws Exception { assertThat(cloudConvertClientException.getStatus().getCode()).isEqualTo(HttpStatus.SC_UNAUTHORIZED); assertThat(cloudConvertClientException.getStatus().getReason()).isEqualTo("Unauthorized"); - assertThat(cloudConvertClientException.getHeaders()).hasSize(6); + assertThat(cloudConvertClientException.getHeaders()).containsKey("Content-Type"); assertThat(cloudConvertClientException.getBody().getCode()).isEqualTo("UNAUTHENTICATED"); assertThat(cloudConvertClientException.getBody().getMessage()).isEqualTo("Unauthenticated."); } @@ -58,10 +58,10 @@ public void unprocessableEntity() throws Exception { assertThat(cloudConvertClientException.getStatus().getCode()).isEqualTo(HttpStatus.SC_UNPROCESSABLE_ENTITY); assertThat(cloudConvertClientException.getStatus().getReason()).isEqualTo("Unprocessable Entity"); - assertThat(cloudConvertClientException.getHeaders()).hasSize(8); + assertThat(cloudConvertClientException.getHeaders()).containsKey("Content-Type"); assertThat(cloudConvertClientException.getBody().getCode()).isEqualTo("INVALID_DATA"); assertThat(cloudConvertClientException.getBody().getMessage()).isEqualTo("The given data was invalid."); - assertThat(cloudConvertClientException.getBody().getErrors()).hasSize(1); + assertThat(cloudConvertClientException.getBody().getErrors()).containsKey("tasks"); } @After From 9770c44cb1ef65638b7289d2a59fa8c24a34837d Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Fri, 3 Dec 2021 13:07:01 +0100 Subject: [PATCH 32/51] bump version --- README.md | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d2de217..0f63bb0 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Add the following dependency to your pom.xml: com.cloudconvert cloudconvert-java - 1.0.7 + 1.1.0 ``` diff --git a/pom.xml b/pom.xml index 8a61a84..d12a94e 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ com.cloudconvert cloudconvert-java - 2.0.0 + 1.1.0 cloudconvert-java CloudConvert is an online file converter API - more than 200 different audio, video, document, ebook, archive, image, spreadsheet and presentation formats supported. From 5e138ef84e2ca40c11daf31a89d7428dc0a4730b Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Sun, 27 Mar 2022 12:01:35 +0200 Subject: [PATCH 33/51] signed URLs --- README.md | 24 +++++- .../client/AbstractCloudConvertClient.java | 23 +++-- .../client/AsyncCloudConvertClient.java | 20 +---- .../client/CloudConvertClient.java | 20 +---- .../resource/AbstractResource.java | 4 + .../resource/AbstractSignedUrlResource.java | 72 ++++++++++++++++ .../async/AsyncSignedUrlResource.java | 29 +++++++ .../resource/sync/SignedUrlResource.java | 27 ++++++ .../test/unit/SignedUrlUnitTest.java | 84 +++++++++++++++++++ 9 files changed, 256 insertions(+), 47 deletions(-) create mode 100644 src/main/java/com/cloudconvert/resource/AbstractSignedUrlResource.java create mode 100644 src/main/java/com/cloudconvert/resource/async/AsyncSignedUrlResource.java create mode 100644 src/main/java/com/cloudconvert/resource/sync/SignedUrlResource.java create mode 100644 src/test/java/com/cloudconvert/test/unit/SignedUrlUnitTest.java diff --git a/README.md b/README.md index 0f63bb0..cf3fee5 100644 --- a/README.md +++ b/README.md @@ -190,7 +190,7 @@ final TaskResponse uploadImportTaskResponse = asyncCloudConvertClient.importUsin final TaskResponse waitUploadImportTaskResponse = asyncCloudConvertClient.tasks().wait(uploadImportTaskResponse.getId()).get().getBody(); ``` -## Signing Webhook +## Verify Webhook Signatures The node SDK allows to verify webhook requests received from CloudConvert. ```java @@ -207,6 +207,28 @@ final String signature = "signature"; final boolean isValid = cloudConvertClient.webhooks().verify(payload, signature); ``` +## Signed URLs + +Signed URLs allow converting files on demand only using URL query parameters. The Java SDK allows to generate such URLs. Therefore, you need to obtain a signed URL base and a signing secret on the [CloudConvert Dashboard](https://cloudconvert.com/dashboard/api/v2/signed-urls). + +```java + +final String base = "https://s.cloudconvert.com/..."; // You can find it in your signed URL settings. +final String signingSecret = "..."; // You can find it in your signed URL settings. +final String cacheKey = "mykey"; // Allows caching of the result file for 24h + +final Map tasks = ImmutableMap.of( + "import-my-file", new UrlImportRequest().setUrl("import-url"), + "convert-my-file", new ConvertFilesTaskRequest() + .setInput("import-my-file") + .setOutputFormat("pdf") + "export-my-file", new UrlExportRequest().setInput("convert-my-file") + ); + + +final String url = cloudConvertClient.signedUrls().sign(base, signingSecret, tasks, cacheKey); +``` + ## Unit Tests ``` $ mvn clean install -U -Punit-tests diff --git a/src/main/java/com/cloudconvert/client/AbstractCloudConvertClient.java b/src/main/java/com/cloudconvert/client/AbstractCloudConvertClient.java index cc5b7d6..85b7192 100644 --- a/src/main/java/com/cloudconvert/client/AbstractCloudConvertClient.java +++ b/src/main/java/com/cloudconvert/client/AbstractCloudConvertClient.java @@ -7,13 +7,7 @@ import com.cloudconvert.dto.response.UserResponse; import com.cloudconvert.dto.response.WebhookResponse; import com.cloudconvert.dto.result.AbstractResult; -import com.cloudconvert.resource.AbstractExportFilesResource; -import com.cloudconvert.resource.AbstractFilesResource; -import com.cloudconvert.resource.AbstractImportFilesResource; -import com.cloudconvert.resource.AbstractJobsResource; -import com.cloudconvert.resource.AbstractTasksResource; -import com.cloudconvert.resource.AbstractUsersResource; -import com.cloudconvert.resource.AbstractWebhooksResource; +import com.cloudconvert.resource.*; import java.io.Closeable; import java.io.IOException; @@ -33,13 +27,14 @@ public class AbstractCloudConvertClient< private final AbstractUsersResource abstractUsersResource; private final AbstractWebhooksResource abstractWebhooksResource; private final AbstractFilesResource abstractFilesResource; + private final AbstractSignedUrlResource abstractSignedUrlResource; public AbstractCloudConvertClient( - final AbstractTasksResource abstractTasksResource, final AbstractJobsResource abstractJobsResource, - final AbstractImportFilesResource abstractImportFilesResource, final AbstractExportFilesResource abstractExportFilesResource, - final AbstractUsersResource abstractUsersResource, final AbstractWebhooksResource abstractWebhooksResource, - final AbstractFilesResource abstractFilesResource - ) { + final AbstractTasksResource abstractTasksResource, final AbstractJobsResource abstractJobsResource, + final AbstractImportFilesResource abstractImportFilesResource, final AbstractExportFilesResource abstractExportFilesResource, + final AbstractUsersResource abstractUsersResource, final AbstractWebhooksResource abstractWebhooksResource, + final AbstractFilesResource abstractFilesResource, final AbstractSignedUrlResource abstractSignedUrlResource + ) { this.abstractTasksResource = abstractTasksResource; this.abstractJobsResource = abstractJobsResource; this.abstractImportFilesResource = abstractImportFilesResource; @@ -47,6 +42,7 @@ public AbstractCloudConvertClient( this.abstractUsersResource = abstractUsersResource; this.abstractWebhooksResource = abstractWebhooksResource; this.abstractFilesResource = abstractFilesResource; + this.abstractSignedUrlResource = abstractSignedUrlResource; } public AbstractTasksResource tasks() { @@ -77,6 +73,8 @@ public AbstractFilesResource files() { return abstractFilesResource; } + public AbstractSignedUrlResource signedUrls() { return abstractSignedUrlResource; } + @Override public void close() throws IOException { abstractTasksResource.close(); @@ -86,5 +84,6 @@ public void close() throws IOException { abstractUsersResource.close(); abstractWebhooksResource.close(); abstractFilesResource.close(); + abstractSignedUrlResource.close(); } } diff --git a/src/main/java/com/cloudconvert/client/AsyncCloudConvertClient.java b/src/main/java/com/cloudconvert/client/AsyncCloudConvertClient.java index a2e32cc..e56c489 100644 --- a/src/main/java/com/cloudconvert/client/AsyncCloudConvertClient.java +++ b/src/main/java/com/cloudconvert/client/AsyncCloudConvertClient.java @@ -13,22 +13,7 @@ import com.cloudconvert.dto.result.AsyncResult; import com.cloudconvert.executor.AsyncRequestExecutor; import com.cloudconvert.extractor.ResultExtractor; -import com.cloudconvert.resource.async.AsyncCaptureWebsitesResource; -import com.cloudconvert.resource.async.AsyncConvertFilesResource; -import com.cloudconvert.resource.async.AsyncCreateArchivesResource; -import com.cloudconvert.resource.async.AsyncCreateThumbnailsResource; -import com.cloudconvert.resource.async.AsyncExecuteCommandsResource; -import com.cloudconvert.resource.async.AsyncExportFilesResource; -import com.cloudconvert.resource.async.AsyncFilesResource; -import com.cloudconvert.resource.async.AsyncGetMetadataResource; -import com.cloudconvert.resource.async.AsyncImportFilesResource; -import com.cloudconvert.resource.async.AsyncJobsResource; -import com.cloudconvert.resource.async.AsyncMergeFilesResource; -import com.cloudconvert.resource.async.AsyncOptimizeFilesResource; -import com.cloudconvert.resource.async.AsyncTasksResource; -import com.cloudconvert.resource.async.AsyncUsersResource; -import com.cloudconvert.resource.async.AsyncWebhookResource; -import com.cloudconvert.resource.async.AsyncWriteMetadataResource; +import com.cloudconvert.resource.async.*; import java.io.IOException; import java.io.InputStream; @@ -82,7 +67,8 @@ public AsyncCloudConvertClient( new AsyncExportFilesResource(settingsProvider, objectMapperProvider, asyncRequestExecutor), new AsyncUsersResource(settingsProvider, objectMapperProvider, asyncRequestExecutor), new AsyncWebhookResource(settingsProvider, objectMapperProvider, asyncRequestExecutor), - new AsyncFilesResource(settingsProvider, objectMapperProvider, asyncRequestExecutor) + new AsyncFilesResource(settingsProvider, objectMapperProvider, asyncRequestExecutor), + new AsyncSignedUrlResource(settingsProvider, objectMapperProvider, asyncRequestExecutor) ); } } diff --git a/src/main/java/com/cloudconvert/client/CloudConvertClient.java b/src/main/java/com/cloudconvert/client/CloudConvertClient.java index d8ba070..585021d 100644 --- a/src/main/java/com/cloudconvert/client/CloudConvertClient.java +++ b/src/main/java/com/cloudconvert/client/CloudConvertClient.java @@ -13,22 +13,7 @@ import com.cloudconvert.dto.result.Result; import com.cloudconvert.executor.RequestExecutor; import com.cloudconvert.extractor.ResultExtractor; -import com.cloudconvert.resource.sync.CaptureWebsitesResource; -import com.cloudconvert.resource.sync.ConvertFilesResource; -import com.cloudconvert.resource.sync.CreateArchivesResource; -import com.cloudconvert.resource.sync.CreateThumbnailsResource; -import com.cloudconvert.resource.sync.ExecuteCommandsResource; -import com.cloudconvert.resource.sync.ExportFilesResource; -import com.cloudconvert.resource.sync.FilesResource; -import com.cloudconvert.resource.sync.GetMetadataResource; -import com.cloudconvert.resource.sync.ImportFilesResource; -import com.cloudconvert.resource.sync.JobsResource; -import com.cloudconvert.resource.sync.MergeFilesResource; -import com.cloudconvert.resource.sync.OptimizeFilesResource; -import com.cloudconvert.resource.sync.TasksResource; -import com.cloudconvert.resource.sync.UsersResource; -import com.cloudconvert.resource.sync.WebhookResource; -import com.cloudconvert.resource.sync.WriteMetadataResource; +import com.cloudconvert.resource.sync.*; import java.io.IOException; import java.io.InputStream; @@ -84,7 +69,8 @@ public CloudConvertClient( new ExportFilesResource(settingsProvider, objectMapperProvider, requestExecutor), new UsersResource(settingsProvider, objectMapperProvider, requestExecutor), new WebhookResource(settingsProvider, objectMapperProvider, requestExecutor), - new FilesResource(settingsProvider, objectMapperProvider, requestExecutor) + new FilesResource(settingsProvider, objectMapperProvider, requestExecutor), + new SignedUrlResource(settingsProvider, objectMapperProvider, requestExecutor) ); } } diff --git a/src/main/java/com/cloudconvert/resource/AbstractResource.java b/src/main/java/com/cloudconvert/resource/AbstractResource.java index 291ed25..923790b 100644 --- a/src/main/java/com/cloudconvert/resource/AbstractResource.java +++ b/src/main/java/com/cloudconvert/resource/AbstractResource.java @@ -117,6 +117,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 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/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/sync/SignedUrlResource.java b/src/main/java/com/cloudconvert/resource/sync/SignedUrlResource.java new file mode 100644 index 0000000..b912634 --- /dev/null +++ b/src/main/java/com/cloudconvert/resource/sync/SignedUrlResource.java @@ -0,0 +1,27 @@ +package com.cloudconvert.resource.sync; + +import com.cloudconvert.client.mapper.ObjectMapperProvider; +import com.cloudconvert.client.setttings.SettingsProvider; +import com.cloudconvert.executor.RequestExecutor; +import com.cloudconvert.resource.AbstractSignedUrlResource; + +import java.io.IOException; + +public class SignedUrlResource extends AbstractSignedUrlResource { + + private final RequestExecutor requestExecutor; + + public SignedUrlResource( + final SettingsProvider settingsProvider, + final ObjectMapperProvider objectMapperProvider, final RequestExecutor requestExecutor + ) { + super(settingsProvider, objectMapperProvider); + + this.requestExecutor = requestExecutor; + } + + @Override + public void close() throws IOException { + requestExecutor.close(); + } +} diff --git a/src/test/java/com/cloudconvert/test/unit/SignedUrlUnitTest.java b/src/test/java/com/cloudconvert/test/unit/SignedUrlUnitTest.java new file mode 100644 index 0000000..e115287 --- /dev/null +++ b/src/test/java/com/cloudconvert/test/unit/SignedUrlUnitTest.java @@ -0,0 +1,84 @@ +package com.cloudconvert.test.unit; + +import com.cloudconvert.client.CloudConvertClient; +import com.cloudconvert.client.mapper.ObjectMapperProvider; +import com.cloudconvert.client.setttings.SettingsProvider; +import com.cloudconvert.dto.request.ConvertFilesTaskRequest; +import com.cloudconvert.dto.request.TaskRequest; +import com.cloudconvert.dto.request.UrlExportRequest; +import com.cloudconvert.dto.request.UrlImportRequest; +import com.cloudconvert.executor.RequestExecutor; +import com.cloudconvert.test.framework.AbstractTest; +import com.cloudconvert.test.framework.UnitTest; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.google.common.collect.ImmutableMap; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.experimental.categories.Category; +import org.junit.runner.RunWith; +import org.mockito.Answers; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; + +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.util.Map; + +import static org.mockito.Mockito.*; +import static org.assertj.core.api.Assertions.assertThat; + +@Category(UnitTest.class) +@RunWith(MockitoJUnitRunner.class) +public class SignedUrlUnitTest extends AbstractTest { + + + @Mock + private SettingsProvider settingsProvider; + + @Mock + private RequestExecutor requestExecutor; + + @Mock(answer = Answers.CALLS_REAL_METHODS) + private ObjectMapperProvider objectMapperProvider; + + private CloudConvertClient cloudConvertClient; + + @Before + public void before() { + + + cloudConvertClient = new CloudConvertClient(settingsProvider, objectMapperProvider, requestExecutor); + } + + @Test + public void signSignedUrl() throws NoSuchAlgorithmException, InvalidKeyException, JsonProcessingException { + + final Map tasks = ImmutableMap.of( + "import-my-file", new UrlImportRequest().setUrl("import-url"), + "convert-my-file", new ConvertFilesTaskRequest() + .setInput("import-my-file") + .set("width", 100) + .set("height", 100), + "export-my-file", new UrlExportRequest().setInput("convert-my-file") + ); + + final String base = "https://s.cloudconvert.com/b3d85428-584e-4639-bc11-76b7dee9c109"; + final String signingSecret = "NT8dpJkttEyfSk3qlRgUJtvTkx64vhyX"; + final String cacheKey = "mykey"; + + final String url = cloudConvertClient.signedUrls().sign(base, signingSecret, tasks, cacheKey); + + assertThat(url).startsWith(base); + assertThat(url).contains("?job="); + assertThat(url).contains("&cache_key=mykey"); + assertThat(url).contains("&s=b04d8cf7d65ec56c839443c69dd2bb75e8792e006441019957c0d9824319612a"); + + } + + + @After + public void after() throws Exception { + cloudConvertClient.close(); + } +} From 1fe41413f06feeaf37c8257eeb3bbe6f141216f4 Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Sun, 27 Mar 2022 12:17:10 +0200 Subject: [PATCH 34/51] use new sync API endpoints for job/task wait() --- .../client/setttings/AbstractSettingsProvider.java | 10 ++++++++++ .../client/setttings/SettingsProvider.java | 2 ++ .../resource/AbstractJobsResource.java | 2 +- .../cloudconvert/resource/AbstractResource.java | 14 ++++++++++++++ .../resource/AbstractTasksResource.java | 2 +- .../cloudconvert/test/framework/AbstractTest.java | 1 + .../AsyncCloudConvertClientExceptionTest.java | 2 +- .../CloudConvertClientExceptionTest.java | 2 +- .../cloudconvert/test/unit/AsyncJobsUnitTest.java | 3 ++- .../cloudconvert/test/unit/AsyncTasksUnitTest.java | 3 ++- .../com/cloudconvert/test/unit/JobsUnitTest.java | 3 ++- .../com/cloudconvert/test/unit/TasksUnitTest.java | 3 ++- .../SystemPropertySettingsProviderTest.java | 2 ++ 13 files changed, 41 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/cloudconvert/client/setttings/AbstractSettingsProvider.java b/src/main/java/com/cloudconvert/client/setttings/AbstractSettingsProvider.java index ced89f5..c00c33f 100644 --- a/src/main/java/com/cloudconvert/client/setttings/AbstractSettingsProvider.java +++ b/src/main/java/com/cloudconvert/client/setttings/AbstractSettingsProvider.java @@ -16,9 +16,13 @@ public abstract class AbstractSettingsProvider implements SettingsProvider { public static final String API_URL_SANDBOX = "https://api.sandbox.cloudconvert.com/v2"; public static final String API_URL_LIVE = "https://api.cloudconvert.com/v2"; + public static final String API_SYNC_URL_SANDBOX = "https://sync.api.sandbox.cloudconvert.com/v2"; + public static final String API_SYNC_URL_LIVE = "https://sync.api.cloudconvert.com/v2"; + private String apiKey; private String webhookSigningSecret; private String apiUrl; + private String syncApiUrl; protected AbstractSettingsProvider( final String apiKey, final String webhookSigningSecret, final String useSandbox @@ -43,6 +47,7 @@ private void init(final String apiKey, final String webhookSigningSecret, final this.webhookSigningSecret = Optional.ofNullable(webhookSigningSecret) .orElseThrow(() -> new IllegalArgumentException("Could not resolve " + WEBHOOK_SIGNING_SECRET + ", make sure it is set correctly ...")); this.apiUrl = Boolean.parseBoolean(useSandbox) ? API_URL_SANDBOX : API_URL_LIVE; + this.syncApiUrl = Boolean.parseBoolean(useSandbox) ? API_SYNC_URL_SANDBOX : API_SYNC_URL_LIVE; } @Override @@ -59,4 +64,9 @@ public String getWebhookSigningSecret() { public String getApiUrl() { return apiUrl; } + + @Override + public String getSyncApiUrl() { + return syncApiUrl; + } } diff --git a/src/main/java/com/cloudconvert/client/setttings/SettingsProvider.java b/src/main/java/com/cloudconvert/client/setttings/SettingsProvider.java index a2faa2f..3001796 100644 --- a/src/main/java/com/cloudconvert/client/setttings/SettingsProvider.java +++ b/src/main/java/com/cloudconvert/client/setttings/SettingsProvider.java @@ -9,5 +9,7 @@ public interface SettingsProvider { String getApiUrl(); + String getSyncApiUrl(); + String getWebhookSigningSecret(); } diff --git a/src/main/java/com/cloudconvert/resource/AbstractJobsResource.java b/src/main/java/com/cloudconvert/resource/AbstractJobsResource.java index 240437c..bd9620b 100644 --- a/src/main/java/com/cloudconvert/resource/AbstractJobsResource.java +++ b/src/main/java/com/cloudconvert/resource/AbstractJobsResource.java @@ -144,7 +144,7 @@ public abstract JRAR wait( 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); } diff --git a/src/main/java/com/cloudconvert/resource/AbstractResource.java b/src/main/java/com/cloudconvert/resource/AbstractResource.java index 291ed25..5ce6657 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 { diff --git a/src/main/java/com/cloudconvert/resource/AbstractTasksResource.java b/src/main/java/com/cloudconvert/resource/AbstractTasksResource.java index 7de01f5..bf21b5c 100644 --- a/src/main/java/com/cloudconvert/resource/AbstractTasksResource.java +++ b/src/main/java/com/cloudconvert/resource/AbstractTasksResource.java @@ -164,7 +164,7 @@ public abstract TRAR wait( 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); } diff --git a/src/test/java/com/cloudconvert/test/framework/AbstractTest.java b/src/test/java/com/cloudconvert/test/framework/AbstractTest.java index 49fd82c..424929b 100644 --- a/src/test/java/com/cloudconvert/test/framework/AbstractTest.java +++ b/src/test/java/com/cloudconvert/test/framework/AbstractTest.java @@ -5,6 +5,7 @@ public abstract class AbstractTest { public static final String API_URL = "https://api.sandbox.cloudconvert.com"; + public static final String API_SYNC_URL = "https://sync.api.sandbox.cloudconvert.com"; public static final String API_KEY = "api-key"; public static final String VALUE_AUTHORIZATION = AbstractResource.BEARER + " " + API_KEY; diff --git a/src/test/java/com/cloudconvert/test/integration/AsyncCloudConvertClientExceptionTest.java b/src/test/java/com/cloudconvert/test/integration/AsyncCloudConvertClientExceptionTest.java index ac7fcb6..e2b1693 100644 --- a/src/test/java/com/cloudconvert/test/integration/AsyncCloudConvertClientExceptionTest.java +++ b/src/test/java/com/cloudconvert/test/integration/AsyncCloudConvertClientExceptionTest.java @@ -57,7 +57,7 @@ public void unprocessableEntity() throws Exception { () -> asyncCloudConvertAuthorizedClient.jobs().create(ImmutableMap.of()).get(), CloudConvertClientException.class); assertThat(cloudConvertClientException.getStatus().getCode()).isEqualTo(HttpStatus.SC_UNPROCESSABLE_ENTITY); - assertThat(cloudConvertClientException.getStatus().getReason()).isEqualTo("Unprocessable Entity"); + assertThat(cloudConvertClientException.getStatus().getReason()).contains("Unprocessable"); assertThat(cloudConvertClientException.getHeaders()).containsKey("Content-Type"); assertThat(cloudConvertClientException.getBody().getCode()).isEqualTo("INVALID_DATA"); assertThat(cloudConvertClientException.getBody().getMessage()).isEqualTo("The given data was invalid."); diff --git a/src/test/java/com/cloudconvert/test/integration/CloudConvertClientExceptionTest.java b/src/test/java/com/cloudconvert/test/integration/CloudConvertClientExceptionTest.java index c762fd2..3c5e6ea 100644 --- a/src/test/java/com/cloudconvert/test/integration/CloudConvertClientExceptionTest.java +++ b/src/test/java/com/cloudconvert/test/integration/CloudConvertClientExceptionTest.java @@ -57,7 +57,7 @@ public void unprocessableEntity() throws Exception { () -> cloudConvertAuthorizedClient.jobs().create(ImmutableMap.of()), CloudConvertClientException.class); assertThat(cloudConvertClientException.getStatus().getCode()).isEqualTo(HttpStatus.SC_UNPROCESSABLE_ENTITY); - assertThat(cloudConvertClientException.getStatus().getReason()).isEqualTo("Unprocessable Entity"); + assertThat(cloudConvertClientException.getStatus().getReason()).contains("Unprocessable"); assertThat(cloudConvertClientException.getHeaders()).containsKey("Content-Type"); assertThat(cloudConvertClientException.getBody().getCode()).isEqualTo("INVALID_DATA"); assertThat(cloudConvertClientException.getBody().getMessage()).isEqualTo("The given data was invalid."); diff --git a/src/test/java/com/cloudconvert/test/unit/AsyncJobsUnitTest.java b/src/test/java/com/cloudconvert/test/unit/AsyncJobsUnitTest.java index 85b2682..f825623 100644 --- a/src/test/java/com/cloudconvert/test/unit/AsyncJobsUnitTest.java +++ b/src/test/java/com/cloudconvert/test/unit/AsyncJobsUnitTest.java @@ -77,6 +77,7 @@ public class AsyncJobsUnitTest extends AbstractTest { public void before() { when(settingsProvider.getApiKey()).thenReturn(API_KEY); when(settingsProvider.getApiUrl()).thenReturn(API_URL); + when(settingsProvider.getSyncApiUrl()).thenReturn(API_SYNC_URL); asyncCloudConvertClient = new AsyncCloudConvertClient(settingsProvider, objectMapperProvider, asyncRequestExecutor); } @@ -152,7 +153,7 @@ public void jobs_wait() throws Exception { assertThat(httpUriRequest).isNotNull(); assertThat(httpUriRequest.getMethod()).isEqualTo(HttpGet.METHOD_NAME); - assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_URL + "/" + AbstractResource.V2 + "/jobs/" + JOB_ID + "/wait"); + assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_SYNC_URL + "/" + AbstractResource.V2 + "/jobs/" + JOB_ID); assertThat(httpUriRequest).isInstanceOf(HttpRequestBase.class); assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); diff --git a/src/test/java/com/cloudconvert/test/unit/AsyncTasksUnitTest.java b/src/test/java/com/cloudconvert/test/unit/AsyncTasksUnitTest.java index 31faa53..8471c25 100644 --- a/src/test/java/com/cloudconvert/test/unit/AsyncTasksUnitTest.java +++ b/src/test/java/com/cloudconvert/test/unit/AsyncTasksUnitTest.java @@ -78,6 +78,7 @@ public class AsyncTasksUnitTest extends AbstractTest { public void before() { when(settingsProvider.getApiKey()).thenReturn(API_KEY); when(settingsProvider.getApiUrl()).thenReturn(API_URL); + when(settingsProvider.getSyncApiUrl()).thenReturn(API_SYNC_URL); asyncCloudConvertClient = new AsyncCloudConvertClient(settingsProvider, objectMapperProvider, asyncRequestExecutor); } @@ -137,7 +138,7 @@ public void tasks_wait() throws Exception { assertThat(httpUriRequest).isNotNull(); assertThat(httpUriRequest.getMethod()).isEqualTo(HttpGet.METHOD_NAME); - assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_URL + "/" + AbstractResource.V2 + "/tasks/" + TASK_ID + "/wait"); + assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_SYNC_URL + "/" + AbstractResource.V2 + "/tasks/" + TASK_ID); assertThat(httpUriRequest).isInstanceOf(HttpRequestBase.class); assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); diff --git a/src/test/java/com/cloudconvert/test/unit/JobsUnitTest.java b/src/test/java/com/cloudconvert/test/unit/JobsUnitTest.java index 0b44a07..0106428 100644 --- a/src/test/java/com/cloudconvert/test/unit/JobsUnitTest.java +++ b/src/test/java/com/cloudconvert/test/unit/JobsUnitTest.java @@ -76,6 +76,7 @@ public class JobsUnitTest extends AbstractTest { public void before() { when(settingsProvider.getApiKey()).thenReturn(API_KEY); when(settingsProvider.getApiUrl()).thenReturn(API_URL); + when(settingsProvider.getSyncApiUrl()).thenReturn(API_SYNC_URL); cloudConvertClient = new CloudConvertClient(settingsProvider, objectMapperProvider, requestExecutor); } @@ -151,7 +152,7 @@ public void jobs_wait() throws Exception { assertThat(httpUriRequest).isNotNull(); assertThat(httpUriRequest.getMethod()).isEqualTo(HttpGet.METHOD_NAME); - assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_URL + "/" + AbstractResource.V2 + "/jobs/" + JOB_ID + "/wait"); + assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_SYNC_URL + "/" + AbstractResource.V2 + "/jobs/" + JOB_ID); assertThat(httpUriRequest).isInstanceOf(HttpRequestBase.class); assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); diff --git a/src/test/java/com/cloudconvert/test/unit/TasksUnitTest.java b/src/test/java/com/cloudconvert/test/unit/TasksUnitTest.java index 9512745..aae88e3 100644 --- a/src/test/java/com/cloudconvert/test/unit/TasksUnitTest.java +++ b/src/test/java/com/cloudconvert/test/unit/TasksUnitTest.java @@ -77,6 +77,7 @@ public class TasksUnitTest extends AbstractTest { public void before() { when(settingsProvider.getApiKey()).thenReturn(API_KEY); when(settingsProvider.getApiUrl()).thenReturn(API_URL); + when(settingsProvider.getSyncApiUrl()).thenReturn(API_SYNC_URL); cloudConvertClient = new CloudConvertClient(settingsProvider, objectMapperProvider, requestExecutor); } @@ -136,7 +137,7 @@ public void tasks_wait() throws Exception { assertThat(httpUriRequest).isNotNull(); assertThat(httpUriRequest.getMethod()).isEqualTo(HttpGet.METHOD_NAME); - assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_URL + "/" + AbstractResource.V2 + "/tasks/" + TASK_ID + "/wait"); + assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_SYNC_URL + "/" + AbstractResource.V2 + "/tasks/" + TASK_ID); assertThat(httpUriRequest).isInstanceOf(HttpRequestBase.class); assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); diff --git a/src/test/java/com/cloudconvert/test/unit/settings/SystemPropertySettingsProviderTest.java b/src/test/java/com/cloudconvert/test/unit/settings/SystemPropertySettingsProviderTest.java index 817f299..e4aa3bc 100644 --- a/src/test/java/com/cloudconvert/test/unit/settings/SystemPropertySettingsProviderTest.java +++ b/src/test/java/com/cloudconvert/test/unit/settings/SystemPropertySettingsProviderTest.java @@ -36,6 +36,7 @@ public void success_useSandbox() { assertThat(systemPropertySettingsProvider.getApiKey()).isEqualTo(API_KEY); assertThat(systemPropertySettingsProvider.getWebhookSigningSecret()).isEqualTo(WEBHOOK_SIGNING_SECRET); assertThat(systemPropertySettingsProvider.getApiUrl()).isEqualTo(AbstractSettingsProvider.API_URL_SANDBOX); + assertThat(systemPropertySettingsProvider.getSyncApiUrl()).isEqualTo(AbstractSettingsProvider.API_SYNC_URL_SANDBOX); } @Test @@ -48,6 +49,7 @@ public void success_useLive() { assertThat(systemPropertySettingsProvider.getApiKey()).isEqualTo(API_KEY); assertThat(systemPropertySettingsProvider.getWebhookSigningSecret()).isEqualTo(WEBHOOK_SIGNING_SECRET); assertThat(systemPropertySettingsProvider.getApiUrl()).isEqualTo(AbstractSettingsProvider.API_URL_LIVE); + assertThat(systemPropertySettingsProvider.getSyncApiUrl()).isEqualTo(AbstractSettingsProvider.API_SYNC_URL_LIVE); } @Test From b0ddd1291fd64b8783126b3e7c07be92d0218367 Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Wed, 30 Mar 2022 14:09:17 +0200 Subject: [PATCH 35/51] Bump version --- README.md | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index cf3fee5..2042b50 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Add the following dependency to your pom.xml: com.cloudconvert cloudconvert-java - 1.1.0 + 1.2.0 ``` diff --git a/pom.xml b/pom.xml index d12a94e..581acef 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ com.cloudconvert cloudconvert-java - 1.1.0 + 1.2.0 cloudconvert-java CloudConvert is an online file converter API - more than 200 different audio, video, document, ebook, archive, image, spreadsheet and presentation formats supported. From f9d4b331701cba69d70395e349925b57ca0fa599 Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Fri, 20 May 2022 13:26:51 +0200 Subject: [PATCH 36/51] Add watermark support --- .../client/AsyncCloudConvertClient.java | 3 +- .../client/CloudConvertClient.java | 3 +- .../java/com/cloudconvert/dto/Operation.java | 1 + .../dto/request/AddWatermarkTaskRequest.java | 55 +++++++++++++++++++ .../AbstractAddWatermarkResource.java | 50 +++++++++++++++++ .../resource/AbstractTasksResource.java | 30 ++++++---- .../async/AsyncAddWatermarkResource.java | 41 ++++++++++++++ .../resource/async/AsyncTasksResource.java | 21 ++++--- .../resource/sync/AddWatermarkResource.java | 43 +++++++++++++++ .../resource/sync/TasksResource.java | 20 +++---- .../AsyncTasksIntegrationTest.java | 46 +++++++++++++--- .../integration/TasksIntegrationTest.java | 49 ++++++++++++++--- .../test/unit/AsyncTasksUnitTest.java | 55 +++++++++++++------ .../cloudconvert/test/unit/TasksUnitTest.java | 55 +++++++++++++------ 14 files changed, 384 insertions(+), 88 deletions(-) create mode 100644 src/main/java/com/cloudconvert/dto/request/AddWatermarkTaskRequest.java create mode 100644 src/main/java/com/cloudconvert/resource/AbstractAddWatermarkResource.java create mode 100644 src/main/java/com/cloudconvert/resource/async/AsyncAddWatermarkResource.java create mode 100644 src/main/java/com/cloudconvert/resource/sync/AddWatermarkResource.java diff --git a/src/main/java/com/cloudconvert/client/AsyncCloudConvertClient.java b/src/main/java/com/cloudconvert/client/AsyncCloudConvertClient.java index e56c489..40f6730 100644 --- a/src/main/java/com/cloudconvert/client/AsyncCloudConvertClient.java +++ b/src/main/java/com/cloudconvert/client/AsyncCloudConvertClient.java @@ -52,7 +52,8 @@ public AsyncCloudConvertClient( new AsyncExecuteCommandsResource(settingsProvider, objectMapperProvider, asyncRequestExecutor), new AsyncCreateThumbnailsResource(settingsProvider, objectMapperProvider, asyncRequestExecutor), new AsyncGetMetadataResource(settingsProvider, objectMapperProvider, asyncRequestExecutor), - new AsyncWriteMetadataResource(settingsProvider, objectMapperProvider, asyncRequestExecutor) + new AsyncWriteMetadataResource(settingsProvider, objectMapperProvider, asyncRequestExecutor), + new AsyncAddWatermarkResource(settingsProvider, objectMapperProvider, asyncRequestExecutor) ), new AsyncJobsResource(settingsProvider, objectMapperProvider, asyncRequestExecutor) ); diff --git a/src/main/java/com/cloudconvert/client/CloudConvertClient.java b/src/main/java/com/cloudconvert/client/CloudConvertClient.java index 585021d..0b40d6b 100644 --- a/src/main/java/com/cloudconvert/client/CloudConvertClient.java +++ b/src/main/java/com/cloudconvert/client/CloudConvertClient.java @@ -53,7 +53,8 @@ public CloudConvertClient( new ExecuteCommandsResource(settingsProvider, objectMapperProvider, requestExecutor), new CreateThumbnailsResource(settingsProvider, objectMapperProvider, requestExecutor), new GetMetadataResource(settingsProvider, objectMapperProvider, requestExecutor), - new WriteMetadataResource(settingsProvider, objectMapperProvider, requestExecutor) + new WriteMetadataResource(settingsProvider, objectMapperProvider, requestExecutor), + new AddWatermarkResource(settingsProvider, objectMapperProvider, requestExecutor) ), new JobsResource(settingsProvider, objectMapperProvider, requestExecutor) ); diff --git a/src/main/java/com/cloudconvert/dto/Operation.java b/src/main/java/com/cloudconvert/dto/Operation.java index 5ef41fe..ae36378 100644 --- a/src/main/java/com/cloudconvert/dto/Operation.java +++ b/src/main/java/com/cloudconvert/dto/Operation.java @@ -13,6 +13,7 @@ public enum Operation { ARCHIVE_EXTRACT("archive/extract"), COMMAND("command"), THUMBNAIL("thumbnail"), + WATERMARK("watermark"), METADATA("metadata"), METADATA_WRITE("metadata/write"), diff --git a/src/main/java/com/cloudconvert/dto/request/AddWatermarkTaskRequest.java b/src/main/java/com/cloudconvert/dto/request/AddWatermarkTaskRequest.java new file mode 100644 index 0000000..8fefe00 --- /dev/null +++ b/src/main/java/com/cloudconvert/dto/request/AddWatermarkTaskRequest.java @@ -0,0 +1,55 @@ +package com.cloudconvert.dto.request; + +import com.cloudconvert.dto.Operation; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +@Getter +@Setter +@Accessors(chain = true) +@ToString +@EqualsAndHashCode(callSuper = true) +public class AddWatermarkTaskRequest extends TaskRequest { + + /** + * (required) The ID of the input task for the conversion, normally the import task. Multiple task IDs can be provided as an array. + */ + private List input; + + /** + * (optional) The current format of the file, e.g. pdf. If not set, the extension of the input file is used as input format. + */ + private String inputFormat; + + /** + * (optional) Use a specific engine for the conversion. + */ + private String engine; + + /** + * (optional) Use a specific engine version for the conversion. + */ + private String engineVersion; + + /** + * (optional) Choose a filename (including extension) for the output file. + */ + private String filename; + + public AddWatermarkTaskRequest setInput(final String... input) { + this.input = Arrays.stream(input).collect(Collectors.toList()); + return this; + } + + @Override + public Operation getOperation() { + return Operation.WATERMARK; + } +} diff --git a/src/main/java/com/cloudconvert/resource/AbstractAddWatermarkResource.java b/src/main/java/com/cloudconvert/resource/AbstractAddWatermarkResource.java new file mode 100644 index 0000000..d421df6 --- /dev/null +++ b/src/main/java/com/cloudconvert/resource/AbstractAddWatermarkResource.java @@ -0,0 +1,50 @@ +package com.cloudconvert.resource; + +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.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 AbstractAddWatermarkResource> extends AbstractResource { + + public static final String PATH_SEGMENT_ADD_WATERMARK = "watermark"; + + public AbstractAddWatermarkResource( + final SettingsProvider settingsProvider, final ObjectMapperProvider objectMapperProvider + ) { + super(settingsProvider, objectMapperProvider); + } + + /** + * Create a task to add a watermark. + * + * @param addWatermarkTaskRequest {@link AddWatermarkTaskRequest} + * @return {@link TRAR} + * @throws IOException + * @throws URISyntaxException + */ + public abstract TRAR watermark( + @NotNull final AddWatermarkTaskRequest addWatermarkTaskRequest + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException; + + protected HttpUriRequest getWatermarkHttpUriRequest( + @NotNull final AddWatermarkTaskRequest addWatermarkTaskRequest + ) throws IOException, URISyntaxException { + final URI uri = getUri(ImmutableList.of(PATH_SEGMENT_ADD_WATERMARK)); + final HttpEntity httpEntity = getHttpEntity(addWatermarkTaskRequest); + + return getHttpUriRequest(HttpPost.class, uri, httpEntity); + } +} diff --git a/src/main/java/com/cloudconvert/resource/AbstractTasksResource.java b/src/main/java/com/cloudconvert/resource/AbstractTasksResource.java index bf21b5c..b76713a 100644 --- a/src/main/java/com/cloudconvert/resource/AbstractTasksResource.java +++ b/src/main/java/com/cloudconvert/resource/AbstractTasksResource.java @@ -2,15 +2,7 @@ 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.CreateThumbnailsTaskRequest; -import com.cloudconvert.dto.request.ExecuteCommandsTaskRequest; -import com.cloudconvert.dto.request.GetMetadataTaskRequest; -import com.cloudconvert.dto.request.MergeFilesTaskRequest; -import com.cloudconvert.dto.request.OptimizeFilesTaskRequest; -import com.cloudconvert.dto.request.WriteMetadataTaskRequest; +import com.cloudconvert.dto.request.*; import com.cloudconvert.dto.response.OperationResponse; import com.cloudconvert.dto.response.Pageable; import com.cloudconvert.dto.response.TaskResponse; @@ -77,6 +69,9 @@ public abstract class AbstractTasksResource abstractWriteMetadataResource; + @Getter + private final AbstractAddWatermarkResource abstractAddWatermarkResource; + private final IncludesToNameValuePairsConverter includesToNameValuePairsConverter; private final FiltersToNameValuePairsConverter filtersToNameValuePairsConverter; private final AlternativeToNameValuePairsConverter alternativeToNameValuePairsConverter; @@ -88,7 +83,7 @@ public AbstractTasksResource( final AbstractCaptureWebsitesResource abstractCaptureWebsitesResource, final AbstractMergeFilesResource abstractMergeFilesResource, final AbstractCreateArchivesResource abstractCreateArchivesResource, final AbstractExecuteCommandsResource abstractExecuteCommandsResource, final AbstractCreateThumbnailsResource abstractCreateThumbnailsResource, final AbstractGetMetadataResource abstractGetMetadataResourceResource, - final AbstractWriteMetadataResource abstractWriteMetadataResourceResource + final AbstractWriteMetadataResource abstractWriteMetadataResourceResource, final AbstractAddWatermarkResource abstractAddWatermarkResource ) { super(settingsProvider, objectMapperProvider); @@ -101,6 +96,7 @@ public AbstractTasksResource( this.abstractCreateThumbnailsResource = abstractCreateThumbnailsResource; this.abstractGetMetadataResource = abstractGetMetadataResourceResource; this.abstractWriteMetadataResource = abstractWriteMetadataResourceResource; + this.abstractAddWatermarkResource = abstractAddWatermarkResource; this.includesToNameValuePairsConverter = new IncludesToNameValuePairsConverter(); this.filtersToNameValuePairsConverter = new FiltersToNameValuePairsConverter(); @@ -549,6 +545,19 @@ public abstract TRAR writeMetadata( ) 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 { abstractConvertFilesResource.close(); @@ -560,5 +569,6 @@ public void close() throws IOException { abstractCreateThumbnailsResource.close(); abstractGetMetadataResource.close(); abstractWriteMetadataResource.close(); + abstractAddWatermarkResource.close(); } } 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/AsyncTasksResource.java b/src/main/java/com/cloudconvert/resource/async/AsyncTasksResource.java index dfdff7d..8b4ea1d 100644 --- a/src/main/java/com/cloudconvert/resource/async/AsyncTasksResource.java +++ b/src/main/java/com/cloudconvert/resource/async/AsyncTasksResource.java @@ -2,15 +2,7 @@ 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.CreateThumbnailsTaskRequest; -import com.cloudconvert.dto.request.ExecuteCommandsTaskRequest; -import com.cloudconvert.dto.request.GetMetadataTaskRequest; -import com.cloudconvert.dto.request.MergeFilesTaskRequest; -import com.cloudconvert.dto.request.OptimizeFilesTaskRequest; -import com.cloudconvert.dto.request.WriteMetadataTaskRequest; +import com.cloudconvert.dto.request.*; import com.cloudconvert.dto.response.OperationResponse; import com.cloudconvert.dto.response.Pageable; import com.cloudconvert.dto.response.TaskResponse; @@ -45,10 +37,10 @@ public AsyncTasksResource( final AsyncCaptureWebsitesResource asyncCaptureWebsitesResource, final AsyncMergeFilesResource asyncMergeFilesResource, final AsyncCreateArchivesResource asyncCreateArchivesResource, final AsyncExecuteCommandsResource asyncExecuteCommandsResource, final AsyncCreateThumbnailsResource asyncCreateThumbnailsResource, final AsyncGetMetadataResource asyncGetMetadataResource, - final AsyncWriteMetadataResource asyncWriteMetadataResource + final AsyncWriteMetadataResource asyncWriteMetadataResource, final AsyncAddWatermarkResource asyncAddWatermarkResource ) { super(settingsProvider, objectMapperProvider, asyncConvertFilesResource, asyncOptimizeFilesResource, asyncCaptureWebsitesResource, - asyncMergeFilesResource, asyncCreateArchivesResource, asyncExecuteCommandsResource, asyncCreateThumbnailsResource, asyncGetMetadataResource, asyncWriteMetadataResource); + asyncMergeFilesResource, asyncCreateArchivesResource, asyncExecuteCommandsResource, asyncCreateThumbnailsResource, asyncGetMetadataResource, asyncWriteMetadataResource, asyncAddWatermarkResource); this.asyncRequestExecutor = asyncRequestExecutor; } @@ -224,6 +216,13 @@ public AsyncResult writeMetadata( 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/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/TasksResource.java b/src/main/java/com/cloudconvert/resource/sync/TasksResource.java index a6c1aeb..70855aa 100644 --- a/src/main/java/com/cloudconvert/resource/sync/TasksResource.java +++ b/src/main/java/com/cloudconvert/resource/sync/TasksResource.java @@ -2,15 +2,7 @@ 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.CreateThumbnailsTaskRequest; -import com.cloudconvert.dto.request.ExecuteCommandsTaskRequest; -import com.cloudconvert.dto.request.GetMetadataTaskRequest; -import com.cloudconvert.dto.request.MergeFilesTaskRequest; -import com.cloudconvert.dto.request.OptimizeFilesTaskRequest; -import com.cloudconvert.dto.request.WriteMetadataTaskRequest; +import com.cloudconvert.dto.request.*; import com.cloudconvert.dto.response.OperationResponse; import com.cloudconvert.dto.response.Pageable; import com.cloudconvert.dto.response.TaskResponse; @@ -46,10 +38,10 @@ public TasksResource( final CaptureWebsitesResource captureWebsitesResource, final MergeFilesResource mergeFilesResource, final CreateArchivesResource createArchivesResource, final ExecuteCommandsResource executeCommandsResource, final CreateThumbnailsResource createThumbnailsResource, final GetMetadataResource getMetadataResource, - final WriteMetadataResource writeMetadataResource + final WriteMetadataResource writeMetadataResource, final AddWatermarkResource addWatermarkResource ) { super(settingsProvider, objectMapperProvider, convertFilesResource, optimizeFilesResource, captureWebsitesResource, - mergeFilesResource, createArchivesResource, executeCommandsResource, createThumbnailsResource, getMetadataResource, writeMetadataResource); + mergeFilesResource, createArchivesResource, executeCommandsResource, createThumbnailsResource, getMetadataResource, writeMetadataResource, addWatermarkResource); this.requestExecutor = requestExecutor; } @@ -222,6 +214,12 @@ public Result writeMetadata(@NotNull WriteMetadataTaskRequest writ return getAbstractWriteMetadataResource().writeMetadata(writeMetadataTaskRequest); } + @Override + public Result watermark(@NotNull AddWatermarkTaskRequest addWatermarkTaskRequest + ) throws IOException, URISyntaxException, CloudConvertClientException, CloudConvertServerException { + return getAbstractAddWatermarkResource().watermark(addWatermarkTaskRequest); + } + @Override public void close() throws IOException { requestExecutor.close(); diff --git a/src/test/java/com/cloudconvert/test/integration/AsyncTasksIntegrationTest.java b/src/test/java/com/cloudconvert/test/integration/AsyncTasksIntegrationTest.java index 0d31894..51e659c 100644 --- a/src/test/java/com/cloudconvert/test/integration/AsyncTasksIntegrationTest.java +++ b/src/test/java/com/cloudconvert/test/integration/AsyncTasksIntegrationTest.java @@ -3,15 +3,7 @@ import com.cloudconvert.client.AsyncCloudConvertClient; import com.cloudconvert.dto.Operation; import com.cloudconvert.dto.Status; -import com.cloudconvert.dto.request.CaptureWebsitesTaskRequest; -import com.cloudconvert.dto.request.ConvertFilesTaskRequest; -import com.cloudconvert.dto.request.CreateArchivesTaskRequest; -import com.cloudconvert.dto.request.CreateThumbnailsTaskRequest; -import com.cloudconvert.dto.request.ExecuteCommandsTaskRequest; -import com.cloudconvert.dto.request.GetMetadataTaskRequest; -import com.cloudconvert.dto.request.OptimizeFilesTaskRequest; -import com.cloudconvert.dto.request.UploadImportRequest; -import com.cloudconvert.dto.request.WriteMetadataTaskRequest; +import com.cloudconvert.dto.request.*; import com.cloudconvert.dto.response.OperationResponse; import com.cloudconvert.dto.response.Pageable; import com.cloudconvert.dto.response.TaskResponse; @@ -390,6 +382,42 @@ public void writeMetadataTaskLifecycle() throws Exception { } + @Test(timeout = TIMEOUT) + public void addWatermarkTaskLifecycle() throws Exception { + + // Watermark + final AddWatermarkTaskRequest addWatermarkTaskRequest = new AddWatermarkTaskRequest() + .setInputFormat(JPG) + .setProperty("text", "Hello World"); + final Result watermarkTaskResponseResult = asyncCloudConvertClient.tasks().watermark(addWatermarkTaskRequest).get(); + assertThat(watermarkTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); + + final TaskResponse watermarkTaskResponse = watermarkTaskResponseResult.getBody(); + assertThat(watermarkTaskResponse.getOperation()).isEqualTo(Operation.WATERMARK); + + // Wait + final Result waitWatermarkTaskResponseResult = asyncCloudConvertClient.tasks().wait(watermarkTaskResponse.getId()).get(); + assertThat(waitWatermarkTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); + + final TaskResponse waitThumbnailTaskResponse = waitWatermarkTaskResponseResult.getBody(); + assertThat(waitThumbnailTaskResponse.getOperation()).isEqualTo(Operation.WATERMARK); + assertThat(waitThumbnailTaskResponse.getStatus()).isEqualTo(Status.FINISHED); + assertThat(waitThumbnailTaskResponse.getId()).isEqualTo(watermarkTaskResponse.getId()); + + // Show + final Result showWatermarkTaskResponseResult = asyncCloudConvertClient.tasks().show(watermarkTaskResponse.getId()).get(); + assertThat(showWatermarkTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); + + final TaskResponse showWatermarkTaskResponse = showWatermarkTaskResponseResult.getBody(); + assertThat(showWatermarkTaskResponse.getOperation()).isEqualTo(Operation.WATERMARK); + assertThat(showWatermarkTaskResponse.getStatus()).isEqualTo(Status.FINISHED); + assertThat(showWatermarkTaskResponse.getId()).isEqualTo(watermarkTaskResponse.getId()); + + // Delete + final Result deleteVoidResult = asyncCloudConvertClient.tasks().delete(watermarkTaskResponse.getId()).get(); + assertThat(deleteVoidResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_NO_CONTENT); + } + @Test(timeout = TIMEOUT) public void listTasksLifecycle() throws Exception { // List operations diff --git a/src/test/java/com/cloudconvert/test/integration/TasksIntegrationTest.java b/src/test/java/com/cloudconvert/test/integration/TasksIntegrationTest.java index de7c925..d6521f8 100644 --- a/src/test/java/com/cloudconvert/test/integration/TasksIntegrationTest.java +++ b/src/test/java/com/cloudconvert/test/integration/TasksIntegrationTest.java @@ -3,15 +3,7 @@ import com.cloudconvert.client.CloudConvertClient; import com.cloudconvert.dto.Operation; import com.cloudconvert.dto.Status; -import com.cloudconvert.dto.request.CaptureWebsitesTaskRequest; -import com.cloudconvert.dto.request.ConvertFilesTaskRequest; -import com.cloudconvert.dto.request.CreateArchivesTaskRequest; -import com.cloudconvert.dto.request.CreateThumbnailsTaskRequest; -import com.cloudconvert.dto.request.ExecuteCommandsTaskRequest; -import com.cloudconvert.dto.request.GetMetadataTaskRequest; -import com.cloudconvert.dto.request.OptimizeFilesTaskRequest; -import com.cloudconvert.dto.request.UploadImportRequest; -import com.cloudconvert.dto.request.WriteMetadataTaskRequest; +import com.cloudconvert.dto.request.*; import com.cloudconvert.dto.response.OperationResponse; import com.cloudconvert.dto.response.Pageable; import com.cloudconvert.dto.response.TaskResponse; @@ -388,6 +380,45 @@ public void writeMetadataTaskLifecycle() throws Exception { assertThat(deleteVoidResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_NO_CONTENT); } + + @Test(timeout = TIMEOUT) + public void watermarkFileTaskLifecycle() throws Exception { + + // Watermark + final AddWatermarkTaskRequest addWatermarkTaskRequest = new AddWatermarkTaskRequest() + .setInputFormat(JPG) + .setProperty("text", "Hello World"); + final Result watermarkTaskResponseResult = cloudConvertClient.tasks().watermark(addWatermarkTaskRequest); + assertThat(watermarkTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_CREATED); + + final TaskResponse watermarkTaskResponse = watermarkTaskResponseResult.getBody(); + assertThat(watermarkTaskResponse.getOperation()).isEqualTo(Operation.WATERMARK); + + // Wait + final Result waitWatermarkTaskResponseResult = cloudConvertClient.tasks().wait(watermarkTaskResponse.getId()); + assertThat(waitWatermarkTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); + + final TaskResponse waitWatermarkTaskResponse = waitWatermarkTaskResponseResult.getBody(); + assertThat(waitWatermarkTaskResponse.getOperation()).isEqualTo(Operation.WATERMARK); + assertThat(waitWatermarkTaskResponse.getStatus()).isEqualTo(Status.FINISHED); + assertThat(waitWatermarkTaskResponse.getId()).isEqualTo(watermarkTaskResponse.getId()); + + // Show + final Result showWatermarkTaskResponseResult = cloudConvertClient.tasks().show(watermarkTaskResponse.getId()); + assertThat(showWatermarkTaskResponseResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); + + final TaskResponse showWatermarkTaskResponse = showWatermarkTaskResponseResult.getBody(); + assertThat(showWatermarkTaskResponse.getOperation()).isEqualTo(Operation.WATERMARK); + assertThat(showWatermarkTaskResponse.getStatus()).isEqualTo(Status.FINISHED); + assertThat(showWatermarkTaskResponse.getId()).isEqualTo(watermarkTaskResponse.getId()); + + // Delete + final Result deleteVoidResult = cloudConvertClient.tasks().delete(watermarkTaskResponse.getId()); + assertThat(deleteVoidResult.getStatus().getCode()).isEqualTo(HttpStatus.SC_NO_CONTENT); + } + + + @Test(timeout = TIMEOUT) public void listTasksLifecycle() throws Exception { // List operations diff --git a/src/test/java/com/cloudconvert/test/unit/AsyncTasksUnitTest.java b/src/test/java/com/cloudconvert/test/unit/AsyncTasksUnitTest.java index 8471c25..c10f410 100644 --- a/src/test/java/com/cloudconvert/test/unit/AsyncTasksUnitTest.java +++ b/src/test/java/com/cloudconvert/test/unit/AsyncTasksUnitTest.java @@ -3,15 +3,7 @@ import com.cloudconvert.client.AsyncCloudConvertClient; 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.CreateThumbnailsTaskRequest; -import com.cloudconvert.dto.request.ExecuteCommandsTaskRequest; -import com.cloudconvert.dto.request.GetMetadataTaskRequest; -import com.cloudconvert.dto.request.MergeFilesTaskRequest; -import com.cloudconvert.dto.request.OptimizeFilesTaskRequest; -import com.cloudconvert.dto.request.WriteMetadataTaskRequest; +import com.cloudconvert.dto.request.*; import com.cloudconvert.dto.response.OperationResponse; import com.cloudconvert.dto.response.Pageable; import com.cloudconvert.dto.response.TaskResponse; @@ -516,10 +508,10 @@ public void tasks_thumbnail() throws Exception { assertThat(httpUriRequest.getMethod()).isEqualTo(HttpPost.METHOD_NAME); assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_URL + "/" + AbstractResource.V2 + "/thumbnail"); assertThat(httpUriRequest).isInstanceOfSatisfying(HttpEntityEnclosingRequestBase.class, httpEntityEnclosingRequestBase -> { - final ExecuteCommandsTaskRequest actualExecuteCommandsTaskRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() - .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), ExecuteCommandsTaskRequest.class)).get(); + final CreateThumbnailsTaskRequest actualCreateThumbnailsTaskRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() + .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), CreateThumbnailsTaskRequest.class)).get(); - assertThat(actualExecuteCommandsTaskRequest.getInput()).isEqualTo(expectedCreateThumbnailsTaskRequest.getInput()); + assertThat(actualCreateThumbnailsTaskRequest.getInput()).isEqualTo(expectedCreateThumbnailsTaskRequest.getInput()); }); assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); @@ -543,10 +535,10 @@ public void tasks_metadata() throws Exception { assertThat(httpUriRequest.getMethod()).isEqualTo(HttpPost.METHOD_NAME); assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_URL + "/" + AbstractResource.V2 + "/metadata"); assertThat(httpUriRequest).isInstanceOfSatisfying(HttpEntityEnclosingRequestBase.class, httpEntityEnclosingRequestBase -> { - final ExecuteCommandsTaskRequest actualExecuteCommandsTaskRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() - .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), ExecuteCommandsTaskRequest.class)).get(); + final GetMetadataTaskRequest actualGetMetadataTaskRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() + .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), GetMetadataTaskRequest.class)).get(); - assertThat(actualExecuteCommandsTaskRequest.getInput()).isEqualTo(expectedGetMetadataTaskRequest.getInput()); + assertThat(actualGetMetadataTaskRequest.getInput()).isEqualTo(expectedGetMetadataTaskRequest.getInput()); }); assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); @@ -569,10 +561,10 @@ public void tasks_metadata_write() throws Exception { assertThat(httpUriRequest.getMethod()).isEqualTo(HttpPost.METHOD_NAME); assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_URL + "/" + AbstractResource.V2 + "/metadata/write"); assertThat(httpUriRequest).isInstanceOfSatisfying(HttpEntityEnclosingRequestBase.class, httpEntityEnclosingRequestBase -> { - final ExecuteCommandsTaskRequest actualExecuteCommandsTaskRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() - .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), ExecuteCommandsTaskRequest.class)).get(); + final WriteMetadataTaskRequest actualWriteMetadataTaskRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() + .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), WriteMetadataTaskRequest.class)).get(); - assertThat(actualExecuteCommandsTaskRequest.getInput()).isEqualTo(expectedWriteMetadataTaskRequest.getInput()); + assertThat(actualWriteMetadataTaskRequest.getInput()).isEqualTo(expectedWriteMetadataTaskRequest.getInput()); }); assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); @@ -581,6 +573,33 @@ public void tasks_metadata_write() throws Exception { } + @Test + public void tasks_watermark() throws Exception { + final AddWatermarkTaskRequest expectedAddWatermarkTaskRequest = new AddWatermarkTaskRequest().setInput("execute-commands-task-input"); + final AsyncResult taskResponseAsyncResult = FutureAsyncResult.builder().build(); + when(asyncRequestExecutor.execute(any(HttpUriRequest.class), eq(AbstractResource.TASK_RESPONSE_TYPE_REFERENCE))).thenReturn(taskResponseAsyncResult); + + assertThat(asyncCloudConvertClient.tasks().watermark(expectedAddWatermarkTaskRequest)).isEqualTo(taskResponseAsyncResult); + verify(asyncRequestExecutor, times(1)).execute(httpUriRequestArgumentCaptor.capture(), eq(AbstractResource.TASK_RESPONSE_TYPE_REFERENCE)); + + final HttpUriRequest httpUriRequest = httpUriRequestArgumentCaptor.getValue(); + + assertThat(httpUriRequest).isNotNull(); + assertThat(httpUriRequest.getMethod()).isEqualTo(HttpPost.METHOD_NAME); + assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_URL + "/" + AbstractResource.V2 + "/watermark"); + assertThat(httpUriRequest).isInstanceOfSatisfying(HttpEntityEnclosingRequestBase.class, httpEntityEnclosingRequestBase -> { + final AddWatermarkTaskRequest actualAddWatermarkTaskRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() + .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), AddWatermarkTaskRequest.class)).get(); + + assertThat(actualAddWatermarkTaskRequest.getInput()).isEqualTo(expectedAddWatermarkTaskRequest.getInput()); + }); + assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> + assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); + assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_USER_AGENT)).hasSize(1).allSatisfy(header -> + assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); + } + + @After public void after() throws Exception { asyncCloudConvertClient.close(); diff --git a/src/test/java/com/cloudconvert/test/unit/TasksUnitTest.java b/src/test/java/com/cloudconvert/test/unit/TasksUnitTest.java index aae88e3..5542ec5 100644 --- a/src/test/java/com/cloudconvert/test/unit/TasksUnitTest.java +++ b/src/test/java/com/cloudconvert/test/unit/TasksUnitTest.java @@ -3,15 +3,7 @@ import com.cloudconvert.client.CloudConvertClient; 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.CreateThumbnailsTaskRequest; -import com.cloudconvert.dto.request.ExecuteCommandsTaskRequest; -import com.cloudconvert.dto.request.GetMetadataTaskRequest; -import com.cloudconvert.dto.request.MergeFilesTaskRequest; -import com.cloudconvert.dto.request.OptimizeFilesTaskRequest; -import com.cloudconvert.dto.request.WriteMetadataTaskRequest; +import com.cloudconvert.dto.request.*; import com.cloudconvert.dto.response.OperationResponse; import com.cloudconvert.dto.response.Pageable; import com.cloudconvert.dto.response.TaskResponse; @@ -515,10 +507,10 @@ public void tasks_thumbnail() throws Exception { assertThat(httpUriRequest.getMethod()).isEqualTo(HttpPost.METHOD_NAME); assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_URL + "/" + AbstractResource.V2 + "/thumbnail"); assertThat(httpUriRequest).isInstanceOfSatisfying(HttpEntityEnclosingRequestBase.class, httpEntityEnclosingRequestBase -> { - final ExecuteCommandsTaskRequest actualExecuteCommandsTaskRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() - .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), ExecuteCommandsTaskRequest.class)).get(); + final CreateThumbnailsTaskRequest actualCreateThumbnailsTaskRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() + .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), CreateThumbnailsTaskRequest.class)).get(); - assertThat(actualExecuteCommandsTaskRequest.getInput()).isEqualTo(expectedCreateThumbnailsTaskRequest.getInput()); + assertThat(actualCreateThumbnailsTaskRequest.getInput()).isEqualTo(expectedCreateThumbnailsTaskRequest.getInput()); }); assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); @@ -541,10 +533,10 @@ public void tasks_metadata() throws Exception { assertThat(httpUriRequest.getMethod()).isEqualTo(HttpPost.METHOD_NAME); assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_URL + "/" + AbstractResource.V2 + "/metadata"); assertThat(httpUriRequest).isInstanceOfSatisfying(HttpEntityEnclosingRequestBase.class, httpEntityEnclosingRequestBase -> { - final ExecuteCommandsTaskRequest actualExecuteCommandsTaskRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() - .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), ExecuteCommandsTaskRequest.class)).get(); + final WriteMetadataTaskRequest actualMetadataTaskRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() + .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), WriteMetadataTaskRequest.class)).get(); - assertThat(actualExecuteCommandsTaskRequest.getInput()).isEqualTo(expectedGetMetadataTaskRequest.getInput()); + assertThat(actualMetadataTaskRequest.getInput()).isEqualTo(expectedGetMetadataTaskRequest.getInput()); }); assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); @@ -567,10 +559,10 @@ public void tasks_write_metadata() throws Exception { assertThat(httpUriRequest.getMethod()).isEqualTo(HttpPost.METHOD_NAME); assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_URL + "/" + AbstractResource.V2 + "/metadata/write"); assertThat(httpUriRequest).isInstanceOfSatisfying(HttpEntityEnclosingRequestBase.class, httpEntityEnclosingRequestBase -> { - final ExecuteCommandsTaskRequest actualExecuteCommandsTaskRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() - .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), ExecuteCommandsTaskRequest.class)).get(); + final WriteMetadataTaskRequest actualWriteMetadataTaskRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() + .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), WriteMetadataTaskRequest.class)).get(); - assertThat(actualExecuteCommandsTaskRequest.getInput()).isEqualTo(expectedWriteMetadataTaskRequest.getInput()); + assertThat(actualWriteMetadataTaskRequest.getInput()).isEqualTo(expectedWriteMetadataTaskRequest.getInput()); }); assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); @@ -579,6 +571,33 @@ public void tasks_write_metadata() throws Exception { } + @Test + public void tasks_watermark() throws Exception { + final AddWatermarkTaskRequest expectedAddWatermarkTaskRequest = new AddWatermarkTaskRequest().setInput("execute-commands-task-input"); + final Result taskResponseResult = Result.builder().build(); + when(requestExecutor.execute(any(HttpUriRequest.class), eq(AbstractResource.TASK_RESPONSE_TYPE_REFERENCE))).thenReturn(taskResponseResult); + + assertThat(cloudConvertClient.tasks().watermark(expectedAddWatermarkTaskRequest)).isEqualTo(taskResponseResult); + verify(requestExecutor, times(1)).execute(httpUriRequestArgumentCaptor.capture(), eq(AbstractResource.TASK_RESPONSE_TYPE_REFERENCE)); + + final HttpUriRequest httpUriRequest = httpUriRequestArgumentCaptor.getValue(); + + assertThat(httpUriRequest).isNotNull(); + assertThat(httpUriRequest.getMethod()).isEqualTo(HttpPost.METHOD_NAME); + assertThat(httpUriRequest.getURI().toString()).isEqualTo(API_URL + "/" + AbstractResource.V2 + "/watermark"); + assertThat(httpUriRequest).isInstanceOfSatisfying(HttpEntityEnclosingRequestBase.class, httpEntityEnclosingRequestBase -> { + final AddWatermarkTaskRequest actualAddWatermarkTaskRequest = ThrowingSupplier.unchecked(() -> objectMapperProvider.provide() + .readValue(httpEntityEnclosingRequestBase.getEntity().getContent(), AddWatermarkTaskRequest.class)).get(); + + assertThat(actualAddWatermarkTaskRequest.getInput()).isEqualTo(expectedAddWatermarkTaskRequest.getInput()); + }); + assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_AUTHORIZATION)).hasSize(1).allSatisfy(header -> + assertThat(VALUE_AUTHORIZATION).isEqualTo(header.getValue())); + assertThat(httpUriRequest.getHeaders(AbstractResource.HEADER_USER_AGENT)).hasSize(1).allSatisfy(header -> + assertThat(AbstractResource.VALUE_USER_AGENT).isEqualTo(header.getValue())); + } + + @After public void after() throws Exception { cloudConvertClient.close(); From 80e2cbc77b8f22ca564a7c655632f15f33917619 Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Fri, 20 May 2022 13:32:49 +0200 Subject: [PATCH 37/51] fix integration test expected error message --- .../test/integration/AsyncCloudConvertClientExceptionTest.java | 1 - .../test/integration/CloudConvertClientExceptionTest.java | 1 - 2 files changed, 2 deletions(-) diff --git a/src/test/java/com/cloudconvert/test/integration/AsyncCloudConvertClientExceptionTest.java b/src/test/java/com/cloudconvert/test/integration/AsyncCloudConvertClientExceptionTest.java index e2b1693..b7d006f 100644 --- a/src/test/java/com/cloudconvert/test/integration/AsyncCloudConvertClientExceptionTest.java +++ b/src/test/java/com/cloudconvert/test/integration/AsyncCloudConvertClientExceptionTest.java @@ -60,7 +60,6 @@ public void unprocessableEntity() throws Exception { assertThat(cloudConvertClientException.getStatus().getReason()).contains("Unprocessable"); assertThat(cloudConvertClientException.getHeaders()).containsKey("Content-Type"); assertThat(cloudConvertClientException.getBody().getCode()).isEqualTo("INVALID_DATA"); - assertThat(cloudConvertClientException.getBody().getMessage()).isEqualTo("The given data was invalid."); assertThat(cloudConvertClientException.getBody().getErrors()).containsKey("tasks"); } diff --git a/src/test/java/com/cloudconvert/test/integration/CloudConvertClientExceptionTest.java b/src/test/java/com/cloudconvert/test/integration/CloudConvertClientExceptionTest.java index 3c5e6ea..e51e506 100644 --- a/src/test/java/com/cloudconvert/test/integration/CloudConvertClientExceptionTest.java +++ b/src/test/java/com/cloudconvert/test/integration/CloudConvertClientExceptionTest.java @@ -60,7 +60,6 @@ public void unprocessableEntity() throws Exception { assertThat(cloudConvertClientException.getStatus().getReason()).contains("Unprocessable"); assertThat(cloudConvertClientException.getHeaders()).containsKey("Content-Type"); assertThat(cloudConvertClientException.getBody().getCode()).isEqualTo("INVALID_DATA"); - assertThat(cloudConvertClientException.getBody().getMessage()).isEqualTo("The given data was invalid."); assertThat(cloudConvertClientException.getBody().getErrors()).containsKey("tasks"); } From a4d531a2ea8dc492c5001a940e269043415848f8 Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Fri, 20 May 2022 13:49:53 +0200 Subject: [PATCH 38/51] Bump version --- README.md | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2042b50..1328b65 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Add the following dependency to your pom.xml: com.cloudconvert cloudconvert-java - 1.2.0 + 1.2.1 ``` diff --git a/pom.xml b/pom.xml index 581acef..1010926 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ com.cloudconvert cloudconvert-java - 1.2.0 + 1.2.1 cloudconvert-java CloudConvert is an online file converter API - more than 200 different audio, video, document, ebook, archive, image, spreadsheet and presentation formats supported. From 6d1c75160842047523ddfd92b5d4488167435122 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 19 Oct 2022 02:19:22 +0000 Subject: [PATCH 39/51] Bump jackson-databind from 2.10.5.1 to 2.13.4.1 Bumps [jackson-databind](https://github.com/FasterXML/jackson) from 2.10.5.1 to 2.13.4.1. - [Release notes](https://github.com/FasterXML/jackson/releases) - [Commits](https://github.com/FasterXML/jackson/commits) --- updated-dependencies: - dependency-name: com.fasterxml.jackson.core:jackson-databind dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 1010926..7cb8fcc 100644 --- a/pom.xml +++ b/pom.xml @@ -58,7 +58,7 @@ 4.5.12 1.27 - 2.10.5.1 + 2.13.4.1 1.7.30 19.0.0 From 282bc59c8056d680afda6e0caea9942047ce2d11 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 31 Mar 2023 15:19:20 +0000 Subject: [PATCH 40/51] Bump jackson-databind from 2.13.4.1 to 2.13.4.2 Bumps [jackson-databind](https://github.com/FasterXML/jackson) from 2.13.4.1 to 2.13.4.2. - [Release notes](https://github.com/FasterXML/jackson/releases) - [Commits](https://github.com/FasterXML/jackson/commits) --- updated-dependencies: - dependency-name: com.fasterxml.jackson.core:jackson-databind dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7cb8fcc..d6ee3bc 100644 --- a/pom.xml +++ b/pom.xml @@ -58,7 +58,7 @@ 4.5.12 1.27 - 2.13.4.1 + 2.13.4.2 1.7.30 19.0.0 From f99bdf4b7ef1893222edf0a688da0807a4fb97eb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 14 Jun 2023 22:33:56 +0000 Subject: [PATCH 41/51] Bump guava from 30.0-jre to 32.0.0-jre Bumps [guava](https://github.com/google/guava) from 30.0-jre to 32.0.0-jre. - [Release notes](https://github.com/google/guava/releases) - [Commits](https://github.com/google/guava/commits) --- updated-dependencies: - dependency-name: com.google.guava:guava dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7cb8fcc..2fb0c84 100644 --- a/pom.xml +++ b/pom.xml @@ -62,7 +62,7 @@ 1.7.30 19.0.0 - 30.0-jre + 32.0.0-jre 1.18.12 From e2fa4a881cc7b9af7d78fbf1cca7b2741eb6c8d1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 24 Aug 2023 20:28:03 +0000 Subject: [PATCH 42/51] Bump org.apache.tika:tika-core from 1.27 to 1.28.3 Bumps [org.apache.tika:tika-core](https://github.com/apache/tika) from 1.27 to 1.28.3. - [Changelog](https://github.com/apache/tika/blob/1.28.3/CHANGES.txt) - [Commits](https://github.com/apache/tika/compare/1.27...1.28.3) --- updated-dependencies: - dependency-name: org.apache.tika:tika-core dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b077d50..3a2d62a 100644 --- a/pom.xml +++ b/pom.xml @@ -56,7 +56,7 @@ 4.5.13 4.1.4 4.5.12 - 1.27 + 1.28.3 2.13.4.2 From adf5523b3b0df9689368b47c657a81a720d81cea Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Wed, 19 Mar 2025 09:59:42 +0100 Subject: [PATCH 43/51] Support Java 17 and 21 --- .github/workflows/run-tests.yml | 12 ++++---- .vscode/settings.json | 4 +++ README.md | 2 +- TODO.md | 29 ------------------- pom.xml | 18 ++++++------ .../EnvironmentVariableSettingsProvider.java | 9 +++++- .../setttings/EnvironmentVariables.java | 5 ++++ .../setttings/SystemEnvironmentVariables.java | 8 +++++ .../test/framework/AbstractTest.java | 7 +++++ ...vironmentVariableSettingsProviderTest.java | 28 +++++++++--------- 10 files changed, 64 insertions(+), 58 deletions(-) create mode 100644 .vscode/settings.json delete mode 100644 TODO.md create mode 100644 src/main/java/com/cloudconvert/client/setttings/EnvironmentVariables.java create mode 100644 src/main/java/com/cloudconvert/client/setttings/SystemEnvironmentVariables.java diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index ed480a0..b1eded9 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -16,16 +16,18 @@ jobs: strategy: fail-fast: false + max-parallel: 1 matrix: - jdk: ["11", "8"] + jdk: ["8", "11", "17", "21"] steps: - - uses: actions/checkout@v2 - - name: Set up JDK 11 - uses: actions/setup-java@v2 + - uses: actions/checkout@v4 + - name: Set up JDK + uses: actions/setup-java@v4 with: java-version: ${{ matrix.jdk }} - distribution: 'adopt' + distribution: 'temurin' + cache: 'maven' - name: MVN Install run: mvn install -DskipTests=true -Dmaven.javadoc.skip=true -Dgpg.skip -B -V - name: Build diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..d53ecaf --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "java.compile.nullAnalysis.mode": "automatic", + "java.configuration.updateBuildConfiguration": "automatic" +} \ No newline at end of file diff --git a/README.md b/README.md index 1328b65..31072f7 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ [![Tests](https://github.com/cloudconvert/cloudconvert-java/actions/workflows/run-tests.yml/badge.svg)](https://github.com/cloudconvert/cloudconvert-java/actions/workflows/run-tests.yml) ![Maven Central](https://img.shields.io/maven-central/v/com.cloudconvert/cloudconvert-java) -This is the official Java SDK v2 for the [CloudConvert](https://cloudconvert.com/api/v2) _API v2_. +This is the official Java SDK v2 for the [CloudConvert](https://cloudconvert.com/api/v2) API. ## Installation Add the following dependency to your pom.xml: diff --git a/TODO.md b/TODO.md deleted file mode 100644 index 9860e6f..0000000 --- a/TODO.md +++ /dev/null @@ -1,29 +0,0 @@ -We need a Java API SDK for an existing REST API. - -The API docs are available at: https://cloudconvert.com/api/v2 - -There are already PHP, node.js and Python SDKs available: -https://github.com/cloudconvert/cloudconvert-php -https://github.com/cloudconvert/cloudconvert-node -https://github.com/cloudconvert/cloudconvert-python - -So the task is basically just "translating" one of these SDKs into Java. - -The SDK should have the following features: -- [DONE] Create jobs, get jobs, delete jobs, wait for job completion -- [DONE] Create tasks, get tasks, delete tasks, wait for task completion -- [DONE] Method to upload input files -- [DONE] Method to download output files -- [DONE] Method to validate webhook signatures -- [DONE] Unit tests -- [DONE] Integration tests -- [DONE] Working Travis configuration for both unit and integration tests -- [DONE] README file (similar to the existing SDKs) -- [DONE] Prepare Maven package (pom.xml) - - -1. [DONE] The SDK should work with Java 8+ -2. [OK] There is no strict deadline, but I would be thankful if you could get it done in ~2 weeks. -3. [OK] Yes, there is a sandbox API available with unlimited requests. -4. [OK] Socket.io is not required for the Java SDK -5. [DONE] Both sync and async support diff --git a/pom.xml b/pom.xml index 3a2d62a..678787c 100644 --- a/pom.xml +++ b/pom.xml @@ -64,13 +64,13 @@ 19.0.0 32.0.0-jre - 1.18.12 + 1.18.30 4.13.1 - 3.3.3 + 4.11.0 + 1.14.17 3.15.0 1.5.0 - 1.19.0 3.0.0-M3 1.6.7 @@ -148,6 +148,12 @@ ${mockito.version} test + + net.bytebuddy + byte-buddy + ${byte-buddy.version} + compile + org.assertj assertj-core @@ -160,12 +166,6 @@ ${throwing-function.version} test - - com.github.stefanbirkner - system-rules - ${system-rules.version} - test - diff --git a/src/main/java/com/cloudconvert/client/setttings/EnvironmentVariableSettingsProvider.java b/src/main/java/com/cloudconvert/client/setttings/EnvironmentVariableSettingsProvider.java index 07d1983..1de65c2 100644 --- a/src/main/java/com/cloudconvert/client/setttings/EnvironmentVariableSettingsProvider.java +++ b/src/main/java/com/cloudconvert/client/setttings/EnvironmentVariableSettingsProvider.java @@ -2,7 +2,14 @@ public class EnvironmentVariableSettingsProvider extends AbstractSettingsProvider { + private final EnvironmentVariables environmentVariables; + public EnvironmentVariableSettingsProvider() { - super(System.getenv(API_KEY), System.getenv(WEBHOOK_SIGNING_SECRET), System.getenv(USE_SANDBOX)); + this(new SystemEnvironmentVariables()); + } + + public EnvironmentVariableSettingsProvider(EnvironmentVariables environmentVariables) { + super(environmentVariables.getenv(API_KEY), environmentVariables.getenv(WEBHOOK_SIGNING_SECRET), environmentVariables.getenv(USE_SANDBOX)); + this.environmentVariables = environmentVariables; } } diff --git a/src/main/java/com/cloudconvert/client/setttings/EnvironmentVariables.java b/src/main/java/com/cloudconvert/client/setttings/EnvironmentVariables.java new file mode 100644 index 0000000..826f6f5 --- /dev/null +++ b/src/main/java/com/cloudconvert/client/setttings/EnvironmentVariables.java @@ -0,0 +1,5 @@ +package com.cloudconvert.client.setttings; + +public interface EnvironmentVariables { + String getenv(String name); +} \ No newline at end of file diff --git a/src/main/java/com/cloudconvert/client/setttings/SystemEnvironmentVariables.java b/src/main/java/com/cloudconvert/client/setttings/SystemEnvironmentVariables.java new file mode 100644 index 0000000..22386fe --- /dev/null +++ b/src/main/java/com/cloudconvert/client/setttings/SystemEnvironmentVariables.java @@ -0,0 +1,8 @@ +package com.cloudconvert.client.setttings; + +public class SystemEnvironmentVariables implements EnvironmentVariables { + @Override + public String getenv(String name) { + return System.getenv(name); + } +} \ No newline at end of file diff --git a/src/test/java/com/cloudconvert/test/framework/AbstractTest.java b/src/test/java/com/cloudconvert/test/framework/AbstractTest.java index 424929b..7973ae6 100644 --- a/src/test/java/com/cloudconvert/test/framework/AbstractTest.java +++ b/src/test/java/com/cloudconvert/test/framework/AbstractTest.java @@ -1,6 +1,8 @@ package com.cloudconvert.test.framework; import com.cloudconvert.resource.AbstractResource; +import org.junit.Before; +import org.mockito.MockitoAnnotations; public abstract class AbstractTest { @@ -11,4 +13,9 @@ public abstract class AbstractTest { public static final String VALUE_AUTHORIZATION = AbstractResource.BEARER + " " + API_KEY; public static final long TIMEOUT = 300000L; + + @Before + public void initMocks() { + MockitoAnnotations.openMocks(this); + } } diff --git a/src/test/java/com/cloudconvert/test/unit/settings/EnvironmentVariableSettingsProviderTest.java b/src/test/java/com/cloudconvert/test/unit/settings/EnvironmentVariableSettingsProviderTest.java index 2de55ae..cc2924e 100644 --- a/src/test/java/com/cloudconvert/test/unit/settings/EnvironmentVariableSettingsProviderTest.java +++ b/src/test/java/com/cloudconvert/test/unit/settings/EnvironmentVariableSettingsProviderTest.java @@ -2,16 +2,17 @@ import com.cloudconvert.client.setttings.AbstractSettingsProvider; import com.cloudconvert.client.setttings.EnvironmentVariableSettingsProvider; +import com.cloudconvert.client.setttings.EnvironmentVariables; import com.cloudconvert.test.framework.UnitTest; -import org.junit.Rule; import org.junit.Test; -import org.junit.contrib.java.lang.system.EnvironmentVariables; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; +import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.mockito.Mockito.when; @Category(UnitTest.class) @RunWith(MockitoJUnitRunner.class) @@ -20,16 +21,16 @@ public class EnvironmentVariableSettingsProviderTest { public static final String API_KEY = "api-key"; public static final String WEBHOOK_SIGNING_SECRET = "webhook-signing-secret"; - @Rule - public EnvironmentVariables environmentVariables = new EnvironmentVariables(); + @Mock + private EnvironmentVariables environmentVariables; @Test public void success_useSandbox() { - environmentVariables.set(AbstractSettingsProvider.API_KEY, API_KEY); - environmentVariables.set(AbstractSettingsProvider.USE_SANDBOX, "true"); - environmentVariables.set(AbstractSettingsProvider.WEBHOOK_SIGNING_SECRET, WEBHOOK_SIGNING_SECRET); + when(environmentVariables.getenv(AbstractSettingsProvider.API_KEY)).thenReturn(API_KEY); + when(environmentVariables.getenv(AbstractSettingsProvider.USE_SANDBOX)).thenReturn("true"); + when(environmentVariables.getenv(AbstractSettingsProvider.WEBHOOK_SIGNING_SECRET)).thenReturn(WEBHOOK_SIGNING_SECRET); - final EnvironmentVariableSettingsProvider environmentVariableSettingsProvider = new EnvironmentVariableSettingsProvider(); + final EnvironmentVariableSettingsProvider environmentVariableSettingsProvider = new EnvironmentVariableSettingsProvider(environmentVariables); assertThat(environmentVariableSettingsProvider.getApiKey()).isEqualTo(API_KEY); assertThat(environmentVariableSettingsProvider.getWebhookSigningSecret()).isEqualTo(WEBHOOK_SIGNING_SECRET); assertThat(environmentVariableSettingsProvider.getApiUrl()).isEqualTo(AbstractSettingsProvider.API_URL_SANDBOX); @@ -37,11 +38,11 @@ public void success_useSandbox() { @Test public void success_useLive() { - environmentVariables.set(AbstractSettingsProvider.API_KEY, API_KEY); - environmentVariables.set(AbstractSettingsProvider.USE_SANDBOX, "false"); - environmentVariables.set(AbstractSettingsProvider.WEBHOOK_SIGNING_SECRET, WEBHOOK_SIGNING_SECRET); + when(environmentVariables.getenv(AbstractSettingsProvider.API_KEY)).thenReturn(API_KEY); + when(environmentVariables.getenv(AbstractSettingsProvider.USE_SANDBOX)).thenReturn("false"); + when(environmentVariables.getenv(AbstractSettingsProvider.WEBHOOK_SIGNING_SECRET)).thenReturn(WEBHOOK_SIGNING_SECRET); - final EnvironmentVariableSettingsProvider environmentVariableSettingsProvider = new EnvironmentVariableSettingsProvider(); + final EnvironmentVariableSettingsProvider environmentVariableSettingsProvider = new EnvironmentVariableSettingsProvider(environmentVariables); assertThat(environmentVariableSettingsProvider.getApiKey()).isEqualTo(API_KEY); assertThat(environmentVariableSettingsProvider.getWebhookSigningSecret()).isEqualTo(WEBHOOK_SIGNING_SECRET); assertThat(environmentVariableSettingsProvider.getApiUrl()).isEqualTo(AbstractSettingsProvider.API_URL_LIVE); @@ -49,6 +50,7 @@ public void success_useLive() { @Test public void failure() { - assertThatThrownBy(EnvironmentVariableSettingsProvider::new).isInstanceOf(IllegalArgumentException.class); + when(environmentVariables.getenv(AbstractSettingsProvider.API_KEY)).thenReturn(null); + assertThatThrownBy(() -> new EnvironmentVariableSettingsProvider(environmentVariables)).isInstanceOf(IllegalArgumentException.class); } } From 7462000391e52e983022fc6392313035699d63b3 Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Wed, 19 Mar 2025 10:58:00 +0100 Subject: [PATCH 44/51] Bump version --- .github/workflows/run-tests.yml | 2 +- README.md | 2 +- pom.xml | 30 ++++++++++-------------------- 3 files changed, 12 insertions(+), 22 deletions(-) diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index b1eded9..bcf7b5d 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -16,7 +16,7 @@ jobs: strategy: fail-fast: false - max-parallel: 1 + max-parallel: 2 matrix: jdk: ["8", "11", "17", "21"] diff --git a/README.md b/README.md index 31072f7..a3575c4 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Add the following dependency to your pom.xml: com.cloudconvert cloudconvert-java - 1.2.1 + 1.2.2 ``` diff --git a/pom.xml b/pom.xml index 678787c..09721ca 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ com.cloudconvert cloudconvert-java - 1.2.1 + 1.2.2 cloudconvert-java CloudConvert is an online file converter API - more than 200 different audio, video, document, ebook, archive, image, spreadsheet and presentation formats supported. @@ -37,16 +37,6 @@ HEAD - - - ossrh - https://oss.sonatype.org/content/repositories/snapshots - - - ossrh - https://oss.sonatype.org/service/local/staging/deploy/maven2/ - - UTF-8 @@ -73,7 +63,7 @@ 1.5.0 3.0.0-M3 - 1.6.7 + 0.7.0 3.1.0 3.1.1 1.6 @@ -203,18 +193,19 @@ ${test.groups} + - org.sonatype.plugins - nexus-staging-maven-plugin - ${nexus-staging-plugin.version} + org.sonatype.central + central-publishing-maven-plugin + ${central-publishing-maven-plugin.version} true - ossrh - https://oss.sonatype.org/ - true + central + true + org.apache.maven.plugins maven-source-plugin @@ -246,7 +237,6 @@ - org.apache.maven.plugins maven-gpg-plugin @@ -263,7 +253,7 @@ - + From 53c48664c66169996659d696a1cb81bf6cc0d2c0 Mon Sep 17 00:00:00 2001 From: Nabeel Ahmed <51607664+nabeelAtAlef@users.noreply.github.com> Date: Tue, 19 Aug 2025 14:56:24 +0400 Subject: [PATCH 45/51] issue 56, fix operation enum for azure export --- src/main/java/com/cloudconvert/dto/Operation.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/cloudconvert/dto/Operation.java b/src/main/java/com/cloudconvert/dto/Operation.java index ae36378..31a0ed8 100644 --- a/src/main/java/com/cloudconvert/dto/Operation.java +++ b/src/main/java/com/cloudconvert/dto/Operation.java @@ -29,7 +29,7 @@ public enum Operation { EXPORT_URL("export/url"), EXPORT_S3("export/s3"), - EXPORT_AZURE_BLOB("export/azure-blob"), + EXPORT_AZURE_BLOB("export/azure/blob"), EXPORT_GOOGLE_CLOUD_STORAGE("export/google-cloud-storage"), EXPORT_OPENSTACK("export/openstack"), EXPORT_SFTP("export/sftp"); @@ -41,4 +41,4 @@ public enum Operation { Operation(final String label) { this.label = label; } -} \ No newline at end of file +} From 343e6ce376dae9c6789bd6d92afc230c8ba77766 Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Tue, 19 Aug 2025 14:11:53 +0200 Subject: [PATCH 46/51] tests: disable fetching all operations --- .../cloudconvert/test/integration/TasksIntegrationTest.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/cloudconvert/test/integration/TasksIntegrationTest.java b/src/test/java/com/cloudconvert/test/integration/TasksIntegrationTest.java index d6521f8..ccaa1d7 100644 --- a/src/test/java/com/cloudconvert/test/integration/TasksIntegrationTest.java +++ b/src/test/java/com/cloudconvert/test/integration/TasksIntegrationTest.java @@ -422,8 +422,9 @@ public void watermarkFileTaskLifecycle() throws Exception { @Test(timeout = TIMEOUT) public void listTasksLifecycle() throws Exception { // List operations - final Result> operationResponsePageable = cloudConvertClient.tasks().operations(); - assertThat(operationResponsePageable.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); + // Currently disabled because they are some unsupported operations + //final Result> operationResponsePageable = cloudConvertClient.tasks().operations(); + //assertThat(operationResponsePageable.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); // List tasks final Result> taskResponsePageable = cloudConvertClient.tasks().list(ImmutableMap.of(), ImmutableList.of(), new Pagination(100, 1)); From db9cb02d7f90a59db57b25066803bc0563e06dc1 Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Tue, 19 Aug 2025 14:15:24 +0200 Subject: [PATCH 47/51] tests: disable fetching all operations --- .../test/integration/AsyncTasksIntegrationTest.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/cloudconvert/test/integration/AsyncTasksIntegrationTest.java b/src/test/java/com/cloudconvert/test/integration/AsyncTasksIntegrationTest.java index 51e659c..7edc04c 100644 --- a/src/test/java/com/cloudconvert/test/integration/AsyncTasksIntegrationTest.java +++ b/src/test/java/com/cloudconvert/test/integration/AsyncTasksIntegrationTest.java @@ -421,8 +421,9 @@ public void addWatermarkTaskLifecycle() throws Exception { @Test(timeout = TIMEOUT) public void listTasksLifecycle() throws Exception { // List operations - final Result> operationResponsePageable = asyncCloudConvertClient.tasks().operations().get(); - assertThat(operationResponsePageable.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); + // Currently disabled because they are some unsupported operations + //final Result> operationResponsePageable = asyncCloudConvertClient.tasks().operations().get(); + //assertThat(operationResponsePageable.getStatus().getCode()).isEqualTo(HttpStatus.SC_OK); // List tasks final Result> taskResponsePageable = asyncCloudConvertClient.tasks() From 34b31414417ecbf0af2f7f222f40f32cf5be8a07 Mon Sep 17 00:00:00 2001 From: Josias Montag Date: Wed, 20 Aug 2025 12:39:02 +0200 Subject: [PATCH 48/51] Bump version --- README.md | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a3575c4..f09c340 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Add the following dependency to your pom.xml: com.cloudconvert cloudconvert-java - 1.2.2 + 1.2.3 ``` diff --git a/pom.xml b/pom.xml index 09721ca..d0f48cf 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ com.cloudconvert cloudconvert-java - 1.2.2 + 1.2.3 cloudconvert-java CloudConvert is an online file converter API - more than 200 different audio, video, document, ebook, archive, image, spreadsheet and presentation formats supported. From b607311d4ab1f97b49f728d1c516502f01ddf6cd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Jan 2026 21:38:36 +0000 Subject: [PATCH 49/51] Bump org.assertj:assertj-core from 3.15.0 to 3.27.7 Bumps [org.assertj:assertj-core](https://github.com/assertj/assertj) from 3.15.0 to 3.27.7. - [Release notes](https://github.com/assertj/assertj/releases) - [Commits](https://github.com/assertj/assertj/compare/assertj-core-3.15.0...assertj-build-3.27.7) --- updated-dependencies: - dependency-name: org.assertj:assertj-core dependency-version: 3.27.7 dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index d0f48cf..40cc6a1 100644 --- a/pom.xml +++ b/pom.xml @@ -59,7 +59,7 @@ 4.13.1 4.11.0 1.14.17 - 3.15.0 + 3.27.7 1.5.0 3.0.0-M3 From 5f18251d429e09e59dd9a225676d009f33ac3e21 Mon Sep 17 00:00:00 2001 From: Nick Howes Date: Fri, 8 May 2026 14:21:52 +0100 Subject: [PATCH 50/51] Upgrade Jackson. Fixes: #61 --- pom.xml | 2 +- .../cloudconvert/client/mapper/ObjectMapperProvider.java | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 40cc6a1..31471db 100644 --- a/pom.xml +++ b/pom.xml @@ -48,7 +48,7 @@ 4.5.12 1.28.3 - 2.13.4.2 + 2.21.2 1.7.30 19.0.0 diff --git a/src/main/java/com/cloudconvert/client/mapper/ObjectMapperProvider.java b/src/main/java/com/cloudconvert/client/mapper/ObjectMapperProvider.java index 1a73312..4996ad5 100644 --- a/src/main/java/com/cloudconvert/client/mapper/ObjectMapperProvider.java +++ b/src/main/java/com/cloudconvert/client/mapper/ObjectMapperProvider.java @@ -3,14 +3,14 @@ import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.PropertyNamingStrategy; +import com.fasterxml.jackson.databind.PropertyNamingStrategies; public class ObjectMapperProvider { public ObjectMapper provide() { return new ObjectMapper() .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) - .setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE) - .setSerializationInclusion(JsonInclude.Include.NON_NULL); + .setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE) + .setDefaultPropertyInclusion(JsonInclude.Include.NON_NULL); } } From 09eaf2babcf11085b208e34aa3e9dee6d2ebf7e9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 30 Jun 2026 05:06:39 +0000 Subject: [PATCH 51/51] Bump com.fasterxml.jackson.core:jackson-databind from 2.21.2 to 2.22.0 Bumps [com.fasterxml.jackson.core:jackson-databind](https://github.com/FasterXML/jackson) from 2.21.2 to 2.22.0. - [Commits](https://github.com/FasterXML/jackson/commits) --- updated-dependencies: - dependency-name: com.fasterxml.jackson.core:jackson-databind dependency-version: 2.22.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 31471db..82f5b87 100644 --- a/pom.xml +++ b/pom.xml @@ -48,7 +48,7 @@ 4.5.12 1.28.3 - 2.21.2 + 2.22.0 1.7.30 19.0.0