Skip to content

Commit 2c3c706

Browse files
authored
feat: add List Strings on the Workflow Step method to Workflows API (#336)
1 parent 17ec43d commit 2c3c706

File tree

3 files changed

+81
-0
lines changed

3 files changed

+81
-0
lines changed

src/main/java/com/crowdin/client/workflows/WorkflowsApi.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,19 @@
66
import com.crowdin.client.core.http.exceptions.HttpException;
77
import com.crowdin.client.core.model.ClientConfig;
88
import com.crowdin.client.core.model.Credentials;
9+
import com.crowdin.client.core.model.OrderByField;
910
import com.crowdin.client.core.model.ResponseList;
1011
import com.crowdin.client.core.model.ResponseObject;
12+
import com.crowdin.client.sourcestrings.model.SourceString;
13+
import com.crowdin.client.sourcestrings.model.SourceStringResponseList;
1114
import com.crowdin.client.workflows.model.WorkflowStep;
1215
import com.crowdin.client.workflows.model.WorkflowStepResponseList;
1316
import com.crowdin.client.workflows.model.WorkflowStepResponseObject;
1417
import com.crowdin.client.workflows.model.WorkflowTemplate;
1518
import com.crowdin.client.workflows.model.WorkflowTemplateResponseList;
1619
import com.crowdin.client.workflows.model.WorkflowTemplateResponseObject;
1720

21+
import java.util.List;
1822
import java.util.Map;
1923
import java.util.Optional;
2024

@@ -52,6 +56,31 @@ public ResponseObject<WorkflowStep> getWorkflowStep(Long projectId, Long stepId)
5256
return ResponseObject.of(workflowStepResponseObject.getData());
5357
}
5458

59+
/**
60+
* @param projectId project identifier
61+
* @param stepId workflow step identifier
62+
* @param languageIds filter progress by language identifiers
63+
* @param orderBy ["id", "text", "identifier", "context", "createdAt", "updatedAt"]. List of OrderByField (default "id asc")
64+
* @param status ["todo", "done", "pending", "incomplete", "need_review"]. String status on the workflow step
65+
* @param limit maximum number of items to retrieve (default 25)
66+
* @param offset starting offset in the collection (default 0)
67+
* @return list of project strings
68+
* @see <ul>
69+
* <li><a href="https://support.crowdin.com/developer/enterprise/api/v2/#tag/Workflows/operation/api.projects.workflow-steps.strings.getMany" target="_blank"><b>Enterprise API Documentation</b></a></li>
70+
* </ul>
71+
*/
72+
public ResponseList<SourceString> listWorkflowStepStrings(Long projectId, Long stepId, String languageIds, List<OrderByField> orderBy, String status, Integer limit, Integer offset) throws HttpException, HttpBadRequestException {
73+
Map<String, Optional<Object>> queryParams = HttpRequestConfig.buildUrlParams(
74+
"languageIds", Optional.ofNullable(languageIds),
75+
"orderBy", Optional.ofNullable(OrderByField.generateSortParam(orderBy)),
76+
"status", Optional.ofNullable(status),
77+
"limit", Optional.ofNullable(limit),
78+
"offset", Optional.ofNullable(offset)
79+
);
80+
SourceStringResponseList workflowStepStringsList = this.httpClient.get(this.url + "/projects/" + projectId + "/workflow-steps/" + stepId + "/strings", new HttpRequestConfig(queryParams), SourceStringResponseList.class);
81+
return SourceStringResponseList.to(workflowStepStringsList);
82+
}
83+
5584
/**
5685
* @param groupId group identifier
5786
* @param limit maximum number of items to retrieve (default 25)

src/test/java/com/crowdin/client/workflows/WorkflowsApiTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.crowdin.client.core.model.ResponseObject;
55
import com.crowdin.client.framework.RequestMock;
66
import com.crowdin.client.framework.TestClient;
7+
import com.crowdin.client.sourcestrings.model.SourceString;
78
import com.crowdin.client.workflows.model.WorkflowStep;
89
import com.crowdin.client.workflows.model.WorkflowTemplate;
910
import org.apache.http.client.methods.HttpGet;
@@ -27,6 +28,7 @@ public List<RequestMock> getMocks() {
2728
return Arrays.asList(
2829
RequestMock.build(this.url + "/projects/" + projectId + "/workflow-steps", HttpGet.METHOD_NAME, "api/workflows/listWorkflows.json"),
2930
RequestMock.build(this.url + "/projects/" + projectId + "/workflow-steps/" + workflowId, HttpGet.METHOD_NAME, "api/workflows/workflow.json"),
31+
RequestMock.build(this.url + "/projects/" + projectId + "/workflow-steps/" + workflowId + "/strings", HttpGet.METHOD_NAME, "api/workflows/workflowStrings.json"),
3032
RequestMock.build(this.url + "/workflow-templates", HttpGet.METHOD_NAME, "api/workflows/listWorkflowTemplates.json"),
3133
RequestMock.build(this.url + "/workflow-templates/" + workflowTemplateId, HttpGet.METHOD_NAME, "api/workflows/workflowTemplate.json")
3234
);
@@ -45,6 +47,13 @@ public void getWorkflowStepTest() {
4547
assertEquals(workflowStep.getData().getTitle(), workflowTitle);
4648
}
4749

50+
@Test
51+
public void listWorkflowStepStringsTest() {
52+
ResponseList<SourceString> workflowStepStrings = this.getWorkflowsApi().listWorkflowStepStrings(projectId, workflowId, null, null, null, null, null);
53+
assertEquals(1, workflowStepStrings.getData().size());
54+
assertEquals(projectId, workflowStepStrings.getData().get(0).getData().getProjectId());
55+
}
56+
4857
@Test
4958
public void listWorkflowTemplatesTest() {
5059
ResponseList<WorkflowTemplate> workflowTemplateResponseList = this.getWorkflowsApi().listWorkflowTemplates(null, null, null);
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
{
2+
"data": [
3+
{
4+
"data": {
5+
"id": 2814,
6+
"projectId": 1,
7+
"branchId": 12,
8+
"identifier": "name",
9+
"text": "Not all videos are shown to users. See more",
10+
"type": "text",
11+
"context": "shown on main page",
12+
"maxLength": 35,
13+
"isHidden": false,
14+
"isDuplicate": true,
15+
"masterStringId": 1,
16+
"hasPlurals": false,
17+
"isIcu": false,
18+
"labelIds": [
19+
3
20+
],
21+
"webUrl": "https://example.crowdin.com/editor/1/all/en-pl?filter=basic&value=0&view=comfortable#2",
22+
"createdAt": "2019-09-20T12:43:57+00:00",
23+
"updatedAt": "2019-09-20T13:24:01+00:00",
24+
"fields": {
25+
"some-field-1": "some value 1",
26+
"some-field-2": 12,
27+
"some-field-3": true,
28+
"some-field-4": [
29+
"en",
30+
"ja"
31+
]
32+
},
33+
"fileId": 48,
34+
"directoryId": 13,
35+
"revision": 1
36+
}
37+
}
38+
],
39+
"pagination": {
40+
"offset": 0,
41+
"limit": 25
42+
}
43+
}

0 commit comments

Comments
 (0)