Skip to content

Commit 9a7aae5

Browse files
Automatically update Java SDK
1 parent bb54a39 commit 9a7aae5

24 files changed

+1289
-50
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<!-- General project information -->
99
<groupId>so.trophy</groupId>
1010
<artifactId>trophy-java</artifactId>
11-
<version>1.0.27</version>
11+
<version>1.0.28</version>
1212
<packaging>jar</packaging>
1313
<name>Trophy</name>
1414
<description>Java client library for the Trophy API</description>

src/main/java/so/trophy/TrophyApiClient.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import so.trophy.core.Suppliers;
99
import java.util.function.Supplier;
1010
import so.trophy.resources.achievements.AchievementsClient;
11+
import so.trophy.resources.admin.AdminClient;
1112
import so.trophy.resources.leaderboards.LeaderboardsClient;
1213
import so.trophy.resources.metrics.MetricsClient;
1314
import so.trophy.resources.points.PointsClient;
@@ -29,6 +30,8 @@ public class TrophyApiClient {
2930

3031
protected final Supplier<LeaderboardsClient> leaderboardsClient;
3132

33+
protected final Supplier<AdminClient> adminClient;
34+
3235
public TrophyApiClient(ClientOptions clientOptions) {
3336
this.clientOptions = clientOptions;
3437
this.achievementsClient = Suppliers.memoize(() -> new AchievementsClient(clientOptions));
@@ -37,6 +40,7 @@ public TrophyApiClient(ClientOptions clientOptions) {
3740
this.streaksClient = Suppliers.memoize(() -> new StreaksClient(clientOptions));
3841
this.pointsClient = Suppliers.memoize(() -> new PointsClient(clientOptions));
3942
this.leaderboardsClient = Suppliers.memoize(() -> new LeaderboardsClient(clientOptions));
43+
this.adminClient = Suppliers.memoize(() -> new AdminClient(clientOptions));
4044
}
4145

4246
public AchievementsClient achievements() {
@@ -63,6 +67,10 @@ public LeaderboardsClient leaderboards() {
6367
return this.leaderboardsClient.get();
6468
}
6569

70+
public AdminClient admin() {
71+
return this.adminClient.get();
72+
}
73+
6674
public static TrophyApiClientBuilder builder() {
6775
return new TrophyApiClientBuilder();
6876
}

src/main/java/so/trophy/TrophyApiClientBuilder.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public final class TrophyApiClientBuilder {
1313

1414
private String apiKey = null;
1515

16-
private Environment environment = Environment.DEFAULT;
16+
private Environment environment = Environment.PRODUCTION;
1717

1818
/**
1919
* Sets apiKey
@@ -28,11 +28,6 @@ public TrophyApiClientBuilder environment(Environment environment) {
2828
return this;
2929
}
3030

31-
public TrophyApiClientBuilder url(String url) {
32-
this.environment = Environment.custom(url);
33-
return this;
34-
}
35-
3631
/**
3732
* Sets the timeout (in seconds) for the client
3833
*/

src/main/java/so/trophy/core/ClientOptions.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ private ClientOptions(Environment environment, Map<String, String> headers,
2828
this.environment = environment;
2929
this.headers = new HashMap<>();
3030
this.headers.putAll(headers);
31-
this.headers.putAll(new HashMap<String,String>() {{put("X-Fern-Language", "JAVA");put("X-Fern-SDK-Name", "com.trophy.fern:api-sdk");put("X-Fern-SDK-Version", "0.0.1740");}});
31+
this.headers.putAll(new HashMap<String,String>() {{put("X-Fern-Language", "JAVA");put("X-Fern-SDK-Name", "com.trophy.fern:api-sdk");put("X-Fern-SDK-Version", "0.0.1810");}});
3232
this.headerSuppliers = headerSuppliers;
3333
this.httpClient = httpClient;
3434
this.timeout = timeout;

src/main/java/so/trophy/core/Environment.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,22 @@
88
import java.lang.String;
99

1010
public final class Environment {
11-
public static final Environment DEFAULT = new Environment("https://app.trophy.so/api");
11+
public static final Environment PRODUCTION = new Environment("api.trophy.so","admin.trophy.so");
1212

13-
private final String url;
13+
private final String api;
1414

15-
private Environment(String url) {
16-
this.url = url;
15+
private final String admin;
16+
17+
Environment(String api, String admin) {
18+
this.api = api;
19+
this.admin = admin;
1720
}
1821

19-
public String getUrl() {
20-
return this.url;
22+
public String getApiURL() {
23+
return this.api;
2124
}
2225

23-
public static Environment custom(String url) {
24-
return new Environment(url);
26+
public String getAdminURL() {
27+
return this.admin;
2528
}
2629
}

src/main/java/so/trophy/resources/achievements/AchievementsClient.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public List<AchievementWithStatsResponse> all() {
5050
* Get all achievements and their completion stats.
5151
*/
5252
public List<AchievementWithStatsResponse> all(RequestOptions requestOptions) {
53-
HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl()).newBuilder()
53+
HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getApiURL()).newBuilder()
5454

5555
.addPathSegments("achievements")
5656
.build();
@@ -99,7 +99,7 @@ public AchievementCompletionResponse complete(String key, AchievementsCompleteRe
9999
*/
100100
public AchievementCompletionResponse complete(String key, AchievementsCompleteRequest request,
101101
RequestOptions requestOptions) {
102-
HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl()).newBuilder()
102+
HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getApiURL()).newBuilder()
103103

104104
.addPathSegments("achievements")
105105
.addPathSegment(key)
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package so.trophy.resources.admin;
2+
3+
/**
4+
* This file was auto-generated by Fern from our API Definition.
5+
*/
6+
7+
8+
import so.trophy.core.ClientOptions;
9+
import so.trophy.core.Suppliers;
10+
import java.util.function.Supplier;
11+
import so.trophy.resources.admin.streaks.StreaksClient;
12+
13+
public class AdminClient {
14+
protected final ClientOptions clientOptions;
15+
16+
protected final Supplier<StreaksClient> streaksClient;
17+
18+
public AdminClient(ClientOptions clientOptions) {
19+
this.clientOptions = clientOptions;
20+
this.streaksClient = Suppliers.memoize(() -> new StreaksClient(clientOptions));
21+
}
22+
23+
public StreaksClient streaks() {
24+
return this.streaksClient.get();
25+
}
26+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package so.trophy.resources.admin.streaks;
2+
3+
/**
4+
* This file was auto-generated by Fern from our API Definition.
5+
*/
6+
7+
8+
import so.trophy.core.ClientOptions;
9+
import so.trophy.core.Suppliers;
10+
import java.util.function.Supplier;
11+
import so.trophy.resources.admin.streaks.freezes.FreezesClient;
12+
13+
public class StreaksClient {
14+
protected final ClientOptions clientOptions;
15+
16+
protected final Supplier<FreezesClient> freezesClient;
17+
18+
public StreaksClient(ClientOptions clientOptions) {
19+
this.clientOptions = clientOptions;
20+
this.freezesClient = Suppliers.memoize(() -> new FreezesClient(clientOptions));
21+
}
22+
23+
public FreezesClient freezes() {
24+
return this.freezesClient.get();
25+
}
26+
}
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
package so.trophy.resources.admin.streaks.freezes;
2+
3+
/**
4+
* This file was auto-generated by Fern from our API Definition.
5+
*/
6+
7+
8+
import com.fasterxml.jackson.core.JsonProcessingException;
9+
import so.trophy.core.ClientOptions;
10+
import so.trophy.core.MediaTypes;
11+
import so.trophy.core.ObjectMappers;
12+
import so.trophy.core.RequestOptions;
13+
import so.trophy.core.TrophyApiApiException;
14+
import so.trophy.core.TrophyApiException;
15+
import so.trophy.errors.BadRequestError;
16+
import so.trophy.errors.UnauthorizedError;
17+
import so.trophy.errors.UnprocessableEntityError;
18+
import java.io.IOException;
19+
import java.lang.Object;
20+
import java.lang.String;
21+
import okhttp3.Headers;
22+
import okhttp3.HttpUrl;
23+
import okhttp3.OkHttpClient;
24+
import okhttp3.Request;
25+
import okhttp3.RequestBody;
26+
import okhttp3.Response;
27+
import okhttp3.ResponseBody;
28+
import so.trophy.resources.admin.streaks.freezes.requests.CreateStreakFreezesRequest;
29+
import so.trophy.types.CreateStreakFreezesResponse;
30+
import so.trophy.types.ErrorBody;
31+
32+
public class FreezesClient {
33+
protected final ClientOptions clientOptions;
34+
35+
public FreezesClient(ClientOptions clientOptions) {
36+
this.clientOptions = clientOptions;
37+
}
38+
39+
/**
40+
* Create streak freezes for multiple users.
41+
*/
42+
public CreateStreakFreezesResponse create(CreateStreakFreezesRequest request) {
43+
return create(request,null);
44+
}
45+
46+
/**
47+
* Create streak freezes for multiple users.
48+
*/
49+
public CreateStreakFreezesResponse create(CreateStreakFreezesRequest request,
50+
RequestOptions requestOptions) {
51+
HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getAdminURL()).newBuilder()
52+
53+
.addPathSegments("streaks/freezes")
54+
.build();
55+
RequestBody body;
56+
try {
57+
body = RequestBody.create(ObjectMappers.JSON_MAPPER.writeValueAsBytes(request), MediaTypes.APPLICATION_JSON);
58+
}
59+
catch(JsonProcessingException e) {
60+
throw new TrophyApiException("Failed to serialize request", e);
61+
}
62+
Request okhttpRequest = new Request.Builder()
63+
.url(httpUrl)
64+
.method("POST", body)
65+
.headers(Headers.of(clientOptions.headers(requestOptions)))
66+
.addHeader("Content-Type", "application/json")
67+
.addHeader("Accept", "application/json")
68+
.build();
69+
OkHttpClient client = clientOptions.httpClient();
70+
if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
71+
client = clientOptions.httpClientWithTimeout(requestOptions);
72+
}
73+
try (Response response = client.newCall(okhttpRequest).execute()) {
74+
ResponseBody responseBody = response.body();
75+
if (response.isSuccessful()) {
76+
return ObjectMappers.JSON_MAPPER.readValue(responseBody.string(), CreateStreakFreezesResponse.class);
77+
}
78+
String responseBodyString = responseBody != null ? responseBody.string() : "{}";
79+
try {
80+
switch (response.code()) {
81+
case 400:throw new BadRequestError(ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorBody.class));
82+
case 401:throw new UnauthorizedError(ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorBody.class));
83+
case 422:throw new UnprocessableEntityError(ObjectMappers.JSON_MAPPER.readValue(responseBodyString, ErrorBody.class));
84+
}
85+
}
86+
catch (JsonProcessingException ignored) {
87+
// unable to map error response, throwing generic error
88+
}
89+
throw new TrophyApiApiException("Error with status code " + response.code(), response.code(), ObjectMappers.JSON_MAPPER.readValue(responseBodyString, Object.class));
90+
}
91+
catch (IOException e) {
92+
throw new TrophyApiException("Network error executing HTTP request", e);
93+
}
94+
}
95+
}
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
package so.trophy.resources.admin.streaks.freezes.requests;
2+
3+
/**
4+
* This file was auto-generated by Fern from our API Definition.
5+
*/
6+
7+
8+
import com.fasterxml.jackson.annotation.JsonAnyGetter;
9+
import com.fasterxml.jackson.annotation.JsonAnySetter;
10+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
11+
import com.fasterxml.jackson.annotation.JsonInclude;
12+
import com.fasterxml.jackson.annotation.JsonProperty;
13+
import com.fasterxml.jackson.annotation.JsonSetter;
14+
import com.fasterxml.jackson.annotation.Nulls;
15+
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
16+
import so.trophy.core.ObjectMappers;
17+
import java.lang.Object;
18+
import java.lang.String;
19+
import java.util.ArrayList;
20+
import java.util.HashMap;
21+
import java.util.List;
22+
import java.util.Map;
23+
import java.util.Objects;
24+
import so.trophy.resources.admin.streaks.freezes.types.CreateStreakFreezesRequestFreezesItem;
25+
26+
@JsonInclude(JsonInclude.Include.NON_ABSENT)
27+
@JsonDeserialize(
28+
builder = CreateStreakFreezesRequest.Builder.class
29+
)
30+
public final class CreateStreakFreezesRequest {
31+
private final List<CreateStreakFreezesRequestFreezesItem> freezes;
32+
33+
private final Map<String, Object> additionalProperties;
34+
35+
private CreateStreakFreezesRequest(List<CreateStreakFreezesRequestFreezesItem> freezes,
36+
Map<String, Object> additionalProperties) {
37+
this.freezes = freezes;
38+
this.additionalProperties = additionalProperties;
39+
}
40+
41+
/**
42+
* @return Array of freezes to create. Maximum 1,000 freezes per request.
43+
*/
44+
@JsonProperty("freezes")
45+
public List<CreateStreakFreezesRequestFreezesItem> getFreezes() {
46+
return freezes;
47+
}
48+
49+
@java.lang.Override
50+
public boolean equals(Object other) {
51+
if (this == other) return true;
52+
return other instanceof CreateStreakFreezesRequest && equalTo((CreateStreakFreezesRequest) other);
53+
}
54+
55+
@JsonAnyGetter
56+
public Map<String, Object> getAdditionalProperties() {
57+
return this.additionalProperties;
58+
}
59+
60+
private boolean equalTo(CreateStreakFreezesRequest other) {
61+
return freezes.equals(other.freezes);
62+
}
63+
64+
@java.lang.Override
65+
public int hashCode() {
66+
return Objects.hash(this.freezes);
67+
}
68+
69+
@java.lang.Override
70+
public String toString() {
71+
return ObjectMappers.stringify(this);
72+
}
73+
74+
public static Builder builder() {
75+
return new Builder();
76+
}
77+
78+
@JsonIgnoreProperties(
79+
ignoreUnknown = true
80+
)
81+
public static final class Builder {
82+
private List<CreateStreakFreezesRequestFreezesItem> freezes = new ArrayList<>();
83+
84+
@JsonAnySetter
85+
private Map<String, Object> additionalProperties = new HashMap<>();
86+
87+
private Builder() {
88+
}
89+
90+
public Builder from(CreateStreakFreezesRequest other) {
91+
freezes(other.getFreezes());
92+
return this;
93+
}
94+
95+
@JsonSetter(
96+
value = "freezes",
97+
nulls = Nulls.SKIP
98+
)
99+
public Builder freezes(List<CreateStreakFreezesRequestFreezesItem> freezes) {
100+
this.freezes.clear();
101+
this.freezes.addAll(freezes);
102+
return this;
103+
}
104+
105+
public Builder addFreezes(CreateStreakFreezesRequestFreezesItem freezes) {
106+
this.freezes.add(freezes);
107+
return this;
108+
}
109+
110+
public Builder addAllFreezes(List<CreateStreakFreezesRequestFreezesItem> freezes) {
111+
this.freezes.addAll(freezes);
112+
return this;
113+
}
114+
115+
public CreateStreakFreezesRequest build() {
116+
return new CreateStreakFreezesRequest(freezes, additionalProperties);
117+
}
118+
}
119+
}

0 commit comments

Comments
 (0)