Skip to content

Commit c1bc68b

Browse files
authored
Merge pull request #34 from crowdin/feat/api-updates
Feat/api updates
2 parents 8276ac6 + d5e80f1 commit c1bc68b

34 files changed

+527
-11
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ repositories {
2828
maven { url "https://jitpack.io" }
2929
}
3030
dependencies {
31-
compile "com.github.crowdin:crowdin-api-client-java:1.1.8"
31+
compile "com.github.crowdin:crowdin-api-client-java:1.2.0"
3232
}
3333
```
3434

@@ -44,7 +44,7 @@ dependencies {
4444
<dependency>
4545
<groupId>com.github.crowdin</groupId>
4646
<artifactId>crowdin-api-client-java</artifactId>
47-
<version>1.1.8</version>
47+
<version>1.2.0</version>
4848
</dependency>
4949
```
5050

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ plugins {
77
}
88

99
sourceCompatibility = 8
10-
version '1.1.8'
10+
version '1.2.0'
1111

1212
repositories {
1313
mavenCentral()

src/main/java/com/crowdin/client/Client.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.crowdin.client.core.CrowdinApi;
44
import com.crowdin.client.core.model.ClientConfig;
55
import com.crowdin.client.core.model.Credentials;
6+
import com.crowdin.client.distributions.DistributionsApi;
67
import com.crowdin.client.glossaries.GlossariesApi;
78
import com.crowdin.client.issues.IssuesApi;
89
import com.crowdin.client.languages.LanguagesApi;
@@ -48,6 +49,7 @@ public class Client extends CrowdinApi {
4849
private final VendorsApi vendorsApi;
4950
private final WebhooksApi webhooksApi;
5051
private final TeamsApi teamsApi;
52+
private final DistributionsApi distributionsApi;
5153

5254
public Client(Credentials credentials) {
5355
super(credentials);
@@ -71,6 +73,7 @@ public Client(Credentials credentials) {
7173
this.vendorsApi = new VendorsApi(credentials);
7274
this.webhooksApi = new WebhooksApi(credentials);
7375
this.teamsApi = new TeamsApi(credentials);
76+
this.distributionsApi = new DistributionsApi(credentials);
7477
}
7578

7679
public Client(Credentials credentials, ClientConfig clientConfig) {
@@ -95,6 +98,7 @@ public Client(Credentials credentials, ClientConfig clientConfig) {
9598
this.vendorsApi = new VendorsApi(credentials, clientConfig);
9699
this.webhooksApi = new WebhooksApi(credentials, clientConfig);
97100
this.teamsApi = new TeamsApi(credentials, clientConfig);
101+
this.distributionsApi = new DistributionsApi(credentials, clientConfig);
98102
}
99103

100104
}
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
package com.crowdin.client.distributions;
2+
3+
import com.crowdin.client.core.CrowdinApi;
4+
import com.crowdin.client.core.http.HttpRequestConfig;
5+
import com.crowdin.client.core.http.exceptions.HttpBadRequestException;
6+
import com.crowdin.client.core.http.exceptions.HttpException;
7+
import com.crowdin.client.core.model.ClientConfig;
8+
import com.crowdin.client.core.model.Credentials;
9+
import com.crowdin.client.core.model.PatchRequest;
10+
import com.crowdin.client.core.model.ResponseList;
11+
import com.crowdin.client.core.model.ResponseObject;
12+
import com.crowdin.client.distributions.model.AddDistributionRequest;
13+
import com.crowdin.client.distributions.model.Distribution;
14+
import com.crowdin.client.distributions.model.DistributionRelease;
15+
import com.crowdin.client.distributions.model.DistributionReleaseResponseObject;
16+
import com.crowdin.client.distributions.model.DistributionResponseList;
17+
import com.crowdin.client.distributions.model.DistributionResponseObject;
18+
19+
import java.util.List;
20+
import java.util.Map;
21+
import java.util.Optional;
22+
23+
public class DistributionsApi extends CrowdinApi {
24+
25+
public DistributionsApi(Credentials credentials) {
26+
super(credentials);
27+
}
28+
29+
public DistributionsApi(Credentials credentials, ClientConfig clientConfig) {
30+
super(credentials, clientConfig);
31+
}
32+
33+
/**
34+
* @param projectId project identifier
35+
* @param limit maximum number of items to retrieve (default 25)
36+
* @param offset starting offset in the collection (default 0)
37+
* @return list of distributions
38+
*/
39+
public ResponseList<Distribution> listDistributions(Long projectId, Integer limit, Integer offset) throws HttpException, HttpBadRequestException {
40+
Map<String, Optional<Object>> queryParams = HttpRequestConfig.buildUrlParams(
41+
"limit", Optional.ofNullable(limit),
42+
"offset", Optional.ofNullable(offset)
43+
);
44+
DistributionResponseList distributionResponseList = this.httpClient.get(this.url + "/projects/" + projectId + "/distributions", new HttpRequestConfig(queryParams), DistributionResponseList.class);
45+
return DistributionResponseList.to(distributionResponseList);
46+
}
47+
48+
/**
49+
* @param projectId project identifier
50+
* @param request request object
51+
* @return newly created distribution
52+
*/
53+
public ResponseObject<Distribution> addDistribution(Long projectId, AddDistributionRequest request) throws HttpException, HttpBadRequestException {
54+
DistributionResponseObject distributionResponseObject = this.httpClient.post(this.url + "/projects/" + projectId + "/distributions", request, new HttpRequestConfig(), DistributionResponseObject.class);
55+
return ResponseObject.of(distributionResponseObject.getData());
56+
}
57+
58+
/**
59+
* @param projectId project identifier
60+
* @param hash hash
61+
* @return distribution
62+
*/
63+
public ResponseObject<Distribution> getDistribution(Long projectId, String hash) throws HttpException, HttpBadRequestException {
64+
DistributionResponseObject distributionResponseObject = this.httpClient.get(this.url + "/projects/" + projectId + "/distributions/" + hash, new HttpRequestConfig(), DistributionResponseObject.class);
65+
return ResponseObject.of(distributionResponseObject.getData());
66+
}
67+
68+
/**
69+
* @param projectId project identifier
70+
* @param hash hash
71+
*/
72+
public void deleteDistribution(Long projectId, String hash) throws HttpException, HttpBadRequestException {
73+
this.httpClient.delete(this.url + "/projects/" + projectId + "/distributions/" + hash, new HttpRequestConfig(), Void.class);
74+
}
75+
76+
/**
77+
* @param projectId project identifier
78+
* @param hash hash
79+
* @param request request object
80+
* @return updated distribution
81+
*/
82+
public ResponseObject<Distribution> editDistribution(Long projectId, String hash, List<PatchRequest> request) throws HttpException, HttpBadRequestException {
83+
DistributionResponseObject distributionResponseObject = this.httpClient.patch(this.url + "/projects/" + projectId + "/distributions/" + hash, request, new HttpRequestConfig(), DistributionResponseObject.class);
84+
return ResponseObject.of(distributionResponseObject.getData());
85+
}
86+
87+
/**
88+
* @param projectId project identifier
89+
* @param hash hash
90+
* @return distribution release
91+
*/
92+
public ResponseObject<DistributionRelease> getDistributionRelease(Long projectId, String hash) throws HttpException, HttpBadRequestException {
93+
DistributionReleaseResponseObject distributionReleaseResponseObject = this.httpClient.get(this.url + "/projects/" + projectId + "/distributions/" + hash + "/release", new HttpRequestConfig(), DistributionReleaseResponseObject.class);
94+
return ResponseObject.of(distributionReleaseResponseObject.getData());
95+
}
96+
97+
/**
98+
* @param projectId project identifier
99+
* @param hash hash
100+
* @return distribution release
101+
*/
102+
public ResponseObject<DistributionRelease> createDistributionRelease(Long projectId, String hash) throws HttpException, HttpBadRequestException {
103+
DistributionReleaseResponseObject distributionReleaseResponseObject = this.httpClient.post(this.url + "/projects/" + projectId + "/distributions/" + hash + "/release", null, new HttpRequestConfig(), DistributionReleaseResponseObject.class);
104+
return ResponseObject.of(distributionReleaseResponseObject.getData());
105+
}
106+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.crowdin.client.distributions.model;
2+
3+
import lombok.Data;
4+
5+
import java.util.List;
6+
7+
@Data
8+
public class AddDistributionRequest {
9+
private String name;
10+
private List<Long> fileIds;
11+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.crowdin.client.distributions.model;
2+
3+
import lombok.Data;
4+
5+
import java.util.Date;
6+
import java.util.List;
7+
8+
@Data
9+
public class Distribution {
10+
private String hash;
11+
private String name;
12+
private List<Long> fileIds;
13+
private Date createdAt;
14+
private Date updatedAt;
15+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.crowdin.client.distributions.model;
2+
3+
import lombok.Data;
4+
5+
import java.util.Date;
6+
7+
@Data
8+
public class DistributionRelease {
9+
private String status;
10+
private Integer progress;
11+
private String currentLanguageId;
12+
private Long currentFileId;
13+
private Date date;
14+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.crowdin.client.distributions.model;
2+
3+
import lombok.Data;
4+
5+
@Data
6+
public class DistributionReleaseResponseObject {
7+
8+
private DistributionRelease data;
9+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.crowdin.client.distributions.model;
2+
3+
import com.crowdin.client.core.model.Pagination;
4+
import com.crowdin.client.core.model.ResponseList;
5+
import com.crowdin.client.core.model.ResponseObject;
6+
import lombok.Data;
7+
8+
import java.util.List;
9+
import java.util.stream.Collectors;
10+
11+
@Data
12+
public class DistributionResponseList {
13+
14+
private List<DistributionResponseObject> data;
15+
private Pagination pagination;
16+
17+
public static ResponseList<Distribution> to(DistributionResponseList distributionResponseList) {
18+
return ResponseList.of(
19+
distributionResponseList.getData().stream()
20+
.map(DistributionResponseObject::getData)
21+
.map(ResponseObject::of)
22+
.collect(Collectors.toList()),
23+
distributionResponseList.getPagination()
24+
);
25+
}
26+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.crowdin.client.distributions.model;
2+
3+
import lombok.Data;
4+
5+
@Data
6+
public class DistributionResponseObject {
7+
8+
private Distribution data;
9+
}

0 commit comments

Comments
 (0)