Skip to content

Commit

Permalink
translations api
Browse files Browse the repository at this point in the history
  • Loading branch information
yevheniyJ committed Nov 24, 2023
1 parent feeabbe commit 5394c11
Show file tree
Hide file tree
Showing 11 changed files with 175 additions and 0 deletions.
19 changes: 19 additions & 0 deletions src/main/java/com/crowdin/client/translations/TranslationsApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import com.crowdin.client.core.model.ResponseList;
import com.crowdin.client.core.model.ResponseObject;
import com.crowdin.client.translations.model.ApplyPreTranslationRequest;
import com.crowdin.client.translations.model.ApplyPreTranslationStringsBasedRequest;
import com.crowdin.client.translations.model.BuildProjectDirectoryTranslationRequest;
import com.crowdin.client.translations.model.BuildProjectFileTranslationRequest;
import com.crowdin.client.translations.model.BuildProjectTranslationRequest;
Expand All @@ -23,6 +24,9 @@
import com.crowdin.client.translations.model.UploadTranslationsRequest;
import com.crowdin.client.translations.model.UploadTranslationsResponse;
import com.crowdin.client.translations.model.UploadTranslationsResponseObject;
import com.crowdin.client.translations.model.UploadTranslationsStringsRequest;
import com.crowdin.client.translations.model.UploadTranslationsStringsResponse;
import com.crowdin.client.translations.model.UploadTranslationsStringsResponseObject;

import java.util.Collections;
import java.util.HashMap;
Expand Down Expand Up @@ -52,6 +56,11 @@ public ResponseObject<PreTranslationStatus> applyPreTranslation(Long projectId,
return ResponseObject.of(preTranslationStatusResponseObject.getData());
}

public ResponseObject<PreTranslationStatus> applyPreTranslationStringsBased(Long projectId, ApplyPreTranslationStringsBasedRequest request) throws HttpException, HttpBadRequestException {
PreTranslationStatusResponseObject preTranslationStatusResponseObject = this.httpClient.post(this.url + "/projects/" + projectId + "/pre-translations", request, new HttpRequestConfig(), PreTranslationStatusResponseObject.class);
return ResponseObject.of(preTranslationStatusResponseObject.getData());
}

/**
* @param projectId project identifier
* @param preTranslationId pre-translation identifier
Expand Down Expand Up @@ -167,6 +176,16 @@ public ResponseObject<UploadTranslationsResponse> uploadTranslations(Long projec
return ResponseObject.of(projectBuildResponseObject.getData());
}

public ResponseObject<UploadTranslationsStringsResponse> uploadTranslationStringsBased(Long projectId, String languageId, UploadTranslationsStringsRequest request) throws HttpException, HttpBadRequestException {
UploadTranslationsStringsResponseObject projectBuildResponseObject = this.httpClient.post(
this.url + "/projects/" + projectId + "/translations/" + languageId,
request,
new HttpRequestConfig(),
UploadTranslationsStringsResponseObject.class
);
return ResponseObject.of(projectBuildResponseObject.getData());
}

/**
* @param projectId project identifier
* @param buildId build identifier
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.crowdin.client.translations.model;

import lombok.Data;

import java.util.List;

@Data
public class ApplyPreTranslationStringsBasedRequest {

private List<String> languageIds;
private List<Long> branchIds;
private Method method;
private Long engineId;
private AutoApproveOption autoApproveOption;
private Boolean duplicateTranslations;
private Boolean skipApprovedTranslations;
private Boolean translateUntranslatedOnly;
private Boolean translateWithPerfectMatchOnly;
private Boolean markAddedTranslationsAsDone;
private List<FallbackLanguage> fallbackLanguages;
private List<Long> labelIds;
private List<Long> excludeLabelIds;

@Data
public static class FallbackLanguage {
private String languageId;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,14 @@ public class PreTranslationStatus {
public static class Attributes {
private List<String> languageIds;
private List<Long> fileIds;
private List<Long> branchIds;
private Method method;
private AutoApproveOption autoApproveOption;
private boolean duplicateTranslations;
private boolean skipApprovedTranslations;
private boolean translateUntranslatedOnly;
private boolean translateWithPerfectMatchOnly;
private boolean markAddedTranslationsAsDone;
private List<Long> labelIds;
private List<Long> excludeLabelIds;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.crowdin.client.translations.model;

import lombok.Data;

@Data
public class UploadTranslationsStringsRequest {

private Long storageId;
private Long branchId;
private Boolean importEqSuggestions;
private Boolean autoApproveImported;
private Boolean translateHidden;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.crowdin.client.translations.model;

import lombok.Data;

@Data
public class UploadTranslationsStringsResponse {

private Long projectId;
private Long storageId;
private String languageId;
private Long branchId;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.crowdin.client.translations.model;

import lombok.Data;

@Data
public class UploadTranslationsStringsResponseObject {

private UploadTranslationsStringsResponse data;
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.crowdin.client.framework.RequestMock;
import com.crowdin.client.framework.TestClient;
import com.crowdin.client.translations.model.ApplyPreTranslationRequest;
import com.crowdin.client.translations.model.ApplyPreTranslationStringsBasedRequest;
import com.crowdin.client.translations.model.AutoApproveOption;
import com.crowdin.client.translations.model.BuildProjectDirectoryTranslationRequest;
import com.crowdin.client.translations.model.BuildProjectFileTranslationRequest;
Expand All @@ -19,6 +20,8 @@
import com.crowdin.client.translations.model.ProjectBuild;
import com.crowdin.client.translations.model.UploadTranslationsRequest;
import com.crowdin.client.translations.model.UploadTranslationsResponse;
import com.crowdin.client.translations.model.UploadTranslationsStringsRequest;
import com.crowdin.client.translations.model.UploadTranslationsStringsResponse;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
Expand All @@ -39,6 +42,7 @@ public class TranslationsApiTest extends TestClient {
private final String preTranslationId = "9e7de270-4f83-41cb-b606-2f90631f26e2";
private final long directoryId = 3L;
private final Long fileId = 2L;
private final Long branchId = 211L;
private final Long storageId = 14L;
private final Long buildId = 2L;
private final String link = "test.com";
Expand All @@ -47,13 +51,15 @@ public class TranslationsApiTest extends TestClient {
public List<RequestMock> getMocks() {
return Arrays.asList(
RequestMock.build(this.url + "/projects/" + projectId + "/pre-translations", HttpPost.METHOD_NAME, "api/translations/preTranslationRequest.json", "api/translations/preTranslationStatus.json"),
RequestMock.build(this.url + "/projects/" + projectId + "/pre-translations", HttpPost.METHOD_NAME, "api/translations/preTranslationStringsBasedRequest.json", "api/translations/preTranslationStatusStringsBased.json"),
RequestMock.build(this.url + "/projects/" + projectId + "/pre-translations/" + preTranslationId, HttpGet.METHOD_NAME, "api/translations/preTranslationStatus.json"),
RequestMock.build(String.format("%s/projects/%d/translations/builds/directories/%d", this.url, projectId, directoryId), HttpPost.METHOD_NAME, "api/translations/buildProjectDirectoryRequest.json", "api/translations/downloadLink.json"),
RequestMock.build(this.url + "/projects/" + projectId + "/translations/builds/files/" + fileId, HttpPost.METHOD_NAME, "api/translations/buildFileRequest.json", "api/translations/downloadLink.json"),
RequestMock.build(this.url + "/projects/" + projectId + "/translations/builds", HttpGet.METHOD_NAME, "api/translations/listProjectBuilds.json"),
RequestMock.build(this.url + "/projects/" + projectId + "/translations/builds", HttpPost.METHOD_NAME, "api/translations/buildProjectRequest.json", "api/translations/projectBuildStatus.json"),
RequestMock.build(this.url + "/projects/" + parallelProjectId + "/translations/builds", HttpPost.METHOD_NAME, "api/translations/pseudoBuildProjectRequest.json", "api/translations/projectBuildStatus.json"),
RequestMock.build(this.url + "/projects/" + projectId + "/translations/" + language, HttpPost.METHOD_NAME, "api/translations/uploadTranslationRequest.json", "api/translations/uploadTranslationResponse.json"),
RequestMock.build(this.url + "/projects/" + projectId + "/translations/" + language, HttpPost.METHOD_NAME, "api/translations/uploadTranslationsStringsRequest.json", "api/translations/uploadTranslationsStringsResponse.json"),
RequestMock.build(this.url + "/projects/" + projectId + "/translations/builds/" + buildId + "/download", HttpGet.METHOD_NAME, "api/translations/downloadLink.json"),
RequestMock.build(this.url + "/projects/" + projectId + "/translations/builds/" + buildId, HttpGet.METHOD_NAME, "api/translations/projectBuildStatus.json"),
RequestMock.build(this.url + "/projects/" + projectId + "/translations/builds/" + buildId, HttpDelete.METHOD_NAME),
Expand All @@ -77,6 +83,22 @@ public void applyPreTranslationTest() {
assertEquals(20000L, preTranslationStatusResponseObject.getData().getAttributes().getExcludeLabelIds().get(0));
}

@Test
public void applyPreTranslationStringsBasedTest() {
ApplyPreTranslationStringsBasedRequest request = new ApplyPreTranslationStringsBasedRequest();
request.setLanguageIds(singletonList(language));
request.setBranchIds(singletonList(branchId));
request.setAutoApproveOption(AutoApproveOption.NONE);
request.setMethod(Method.MT);
request.setLabelIds(singletonList(10000L));
request.setExcludeLabelIds(singletonList(20000L));
ResponseObject<PreTranslationStatus> preTranslationStatusResponseObject = this.getTranslationsApi().applyPreTranslationStringsBased(projectId, request);
assertEquals(preTranslationStatusResponseObject.getData().getIdentifier(), preTranslationId);

assertEquals(10000L, preTranslationStatusResponseObject.getData().getAttributes().getLabelIds().get(0));
assertEquals(20000L, preTranslationStatusResponseObject.getData().getAttributes().getExcludeLabelIds().get(0));
}

@Test
public void preTranslationStatusTest() {
ResponseObject<PreTranslationStatus> preTranslationStatusResponseObject = this.getTranslationsApi().preTranslationStatus(projectId, preTranslationId);
Expand Down Expand Up @@ -171,6 +193,16 @@ public void uploadTranslationsTest() {
assertEquals(uploadTranslationsResponseResponseObject.getData().getStorageId(), storageId);
}

@Test
public void uploadTranslationStringsBasedTest() {
UploadTranslationsStringsRequest request = new UploadTranslationsStringsRequest();
request.setStorageId(storageId);
request.setBranchId(branchId);
request.setTranslateHidden(true);
ResponseObject<UploadTranslationsStringsResponse> uploadTranslationsResponseResponseObject = this.getTranslationsApi().uploadTranslationStringsBased(projectId, language, request);
assertEquals(uploadTranslationsResponseResponseObject.getData().getStorageId(), storageId);
}

@Test
public void downloadProjectTranslationTest() {
ResponseObject<DownloadLink> downloadLinkResponseObject = this.getTranslationsApi().downloadProjectTranslations(projectId, buildId);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"data": {
"identifier": "9e7de270-4f83-41cb-b606-2f90631f26e2",
"status": "created",
"progress": 90,
"attributes": {
"languageIds": [
"uk"
],
"branchIds": [
0
],
"method": "tm",
"autoApproveOption": "all",
"duplicateTranslations": true,
"translateUntranslatedOnly": true,
"translateWithPerfectMatchOnly": true,
"labelIds": [
10000
],
"excludeLabelIds": [
20000
]
},
"createdAt": "2019-09-20T14:05:50+00:00",
"updatedAt": "2019-09-20T14:05:50+00:00",
"startedAt": "2020-04-14T10:32:39Z",
"finishedAt": "2020-04-14T10:32:39Z"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"languageIds": [
"uk"
],
"branchIds": [
211
],
"method": "mt",
"autoApproveOption": "none",
"labelIds": [
10000
],
"excludeLabelIds": [
20000
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"storageId": 14,
"branchId": 211,
"translateHidden": true
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"data": {
"projectId": 8,
"storageId": 14,
"languageId": "uk",
"branchId": 56
}
}

0 comments on commit 5394c11

Please sign in to comment.