diff --git a/src/main/java/com/crowdin/client/translations/TranslationsApi.java b/src/main/java/com/crowdin/client/translations/TranslationsApi.java index eb6451e4e..2a1e6c6ae 100644 --- a/src/main/java/com/crowdin/client/translations/TranslationsApi.java +++ b/src/main/java/com/crowdin/client/translations/TranslationsApi.java @@ -25,6 +25,8 @@ import com.crowdin.client.translations.model.UploadTranslationsStringsRequest; import com.crowdin.client.translations.model.UploadTranslationsStringsResponse; import com.crowdin.client.translations.model.UploadTranslationsStringsResponseObject; +import com.crowdin.client.translations.model.PreTranslationReportResponse; +import com.crowdin.client.translations.model.PreTranslationReportResponseObject; import java.util.Collections; import java.util.HashMap; @@ -288,4 +290,24 @@ public ResponseObject editPreTranslation(Long projectId, String ); return ResponseObject.of(preTranslationResponseObject.getData()); } + + /** + * Pre-Translation Report + * + * @param projectId project identifier + * @param preTranslationId pre-translation identifier + * @return pre-translation report data + * @see + */ + public ResponseObject getPreTranslationReport(Long projectId, String preTranslationId) throws HttpException, HttpBadRequestException { + PreTranslationReportResponseObject response = this.httpClient.get( + this.url + "/projects/" + projectId + "/pre-translations/" + preTranslationId + "/report", + new HttpRequestConfig(), + PreTranslationReportResponseObject.class + ); + return ResponseObject.of(response.getData()); + } } diff --git a/src/main/java/com/crowdin/client/translations/model/PreTranslationReportResponse.java b/src/main/java/com/crowdin/client/translations/model/PreTranslationReportResponse.java new file mode 100644 index 000000000..47c9fe4f5 --- /dev/null +++ b/src/main/java/com/crowdin/client/translations/model/PreTranslationReportResponse.java @@ -0,0 +1,34 @@ +package com.crowdin.client.translations.model; + +import lombok.Data; +import java.util.List; +import java.util.Map; +import com.crowdin.client.translationstatus.model.Category; + + +@Data +public class PreTranslationReportResponse { + + private List languages; + private Method preTranslateType; + + @Data + public static class TargetLanguage { + private String id; + private List files; + private Map skipped; + private List skippedQaCheckCategories; + } + + @Data + public static class File { + private Long id; + private Statistics statistics; + } + + @Data + public static class Statistics { + private Integer phrases; + private Integer words; + } +} diff --git a/src/main/java/com/crowdin/client/translations/model/PreTranslationReportResponseObject.java b/src/main/java/com/crowdin/client/translations/model/PreTranslationReportResponseObject.java new file mode 100644 index 000000000..8e4de9124 --- /dev/null +++ b/src/main/java/com/crowdin/client/translations/model/PreTranslationReportResponseObject.java @@ -0,0 +1,9 @@ +package com.crowdin.client.translations.model; + +import lombok.Data; +import com.crowdin.client.translations.model.PreTranslationReportResponse; + +@Data +public class PreTranslationReportResponseObject { + private PreTranslationReportResponse data; +} \ No newline at end of file diff --git a/src/test/java/com/crowdin/client/translations/TranslationsApiTest.java b/src/test/java/com/crowdin/client/translations/TranslationsApiTest.java index b38612837..722f847b2 100644 --- a/src/test/java/com/crowdin/client/translations/TranslationsApiTest.java +++ b/src/test/java/com/crowdin/client/translations/TranslationsApiTest.java @@ -25,6 +25,8 @@ import com.crowdin.client.translations.model.UploadTranslationsResponse; import com.crowdin.client.translations.model.UploadTranslationsStringsRequest; import com.crowdin.client.translations.model.UploadTranslationsStringsResponse; +import com.crowdin.client.translations.model.PreTranslationReportResponse; + import org.apache.http.client.methods.HttpDelete; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPatch; @@ -69,7 +71,8 @@ public List getMocks() { RequestMock.build(this.url + "/projects/" + projectId + "/translations/builds/" + buildId, HttpDelete.METHOD_NAME), RequestMock.build(String.format("%s/projects/%d/translations/exports", this.url, projectId), HttpPost.METHOD_NAME, "api/translations/exportProjectTranslationRequest.json", "api/translations/exportProjectTranslationResponse.json"), RequestMock.build(this.url + "/projects/" + projectId + "/pre-translations", HttpGet.METHOD_NAME, "api/translations/listPreTranslations.json"), - RequestMock.build(this.url + "/projects/" + projectId + "/pre-translations/" + preTranslationId, HttpPatch.METHOD_NAME, "api/translations/editPreTranslationRequest.json", "api/translations/editPreTranslationResponse.json") + RequestMock.build(this.url + "/projects/" + projectId + "/pre-translations/" + preTranslationId, HttpPatch.METHOD_NAME, "api/translations/editPreTranslationRequest.json", "api/translations/editPreTranslationResponse.json"), + RequestMock.build(this.url + "/projects/" + projectId + "/pre-translations/" + preTranslationId + "/report", HttpGet.METHOD_NAME, "api/translations/preTranslationReportResponse.json") ); } @@ -266,4 +269,16 @@ public void editPreTranslationTest() { assertEquals(language, preTranslationResponseObject.getData().getAttributes().getLanguageIds().get(0)); assertEquals(fileId, preTranslationResponseObject.getData().getAttributes().getFileIds().get(0)); } + + @Test + public void getPreTranslationReportTest() { + ResponseObject response = this.getTranslationsApi().getPreTranslationReport(projectId, preTranslationId); + PreTranslationReportResponse report = response.getData(); + assertNotNull(report); + assertEquals(Method.AI, report.getPreTranslateType()); + PreTranslationReportResponse.TargetLanguage lang = report.getLanguages().get(0); + assertEquals(language, lang.getId()); + PreTranslationReportResponse.File file = lang.getFiles().get(0); + assertEquals(fileId, file.getId()); + } } diff --git a/src/test/resources/api/translations/preTranslationReportResponse.json b/src/test/resources/api/translations/preTranslationReportResponse.json new file mode 100644 index 000000000..594ec5434 --- /dev/null +++ b/src/test/resources/api/translations/preTranslationReportResponse.json @@ -0,0 +1,18 @@ +{ + "data": { + "languages": [ + { + "id": "uk", + "files": [ + { + "id": "2", + "statistics": { "phrases": 6, "words": 13 } + } + ], + "skipped": { "ai_error": 6 }, + "skippedQaCheckCategories": ["spellcheck"] + } + ], + "preTranslateType": "ai" + } +}