Skip to content
This repository was archived by the owner on Apr 1, 2025. It is now read-only.

Commit d6a6165

Browse files
authored
Merge pull request #86 from AssemblyAI/fern-bot/03-11-2024-0206PM
🌿 Fern Regeneration -- March 11, 2024
2 parents 5c18aa3 + 0e9879b commit d6a6165

File tree

10 files changed

+338
-92
lines changed

10 files changed

+338
-92
lines changed

.fernignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ src/main/java/com/assemblyai/api/resources/realtime/types/RealtimeMessage.java
1212
src/main/java/com/assemblyai/api/resources/realtime/types/SessionBegins.java
1313
src/main/java/com/assemblyai/api/resources/realtime/types/SessionTerminated.java
1414

15+
# Ignore ClientOptions to support custom timeouts for LeMUR.
16+
src/main/java/com/assemblyai/api/AssemblyAIBuilder.java
17+
src/main/java/com/assemblyai/api/core/ClientOptions.java
18+
1519
sample-app/src/main/java/sample/App.java
1620
sample-app/src/main/resources/
1721

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ publishing {
4747
maven(MavenPublication) {
4848
groupId = 'com.assemblyai'
4949
artifactId = 'assemblyai-java'
50-
version = '1.0.7'
50+
version = '1.0.8'
5151
from components.java
5252
}
5353
}

src/main/java/com/assemblyai/api/AssemblyAIBuilder.java

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,18 @@
77
import com.assemblyai.api.core.Environment;
88

99
public final class AssemblyAIBuilder {
10-
private final ClientOptions.Builder clientOptionsBuilder = ClientOptions.builder();
11-
private final ClientOptions.Builder lemurClientOptionsBuilder = ClientOptions.builder();
10+
private ClientOptions.Builder clientOptionsBuilder = ClientOptions.builder();
11+
private ClientOptions.Builder lemurClientOptionsBuilder = ClientOptions.builder();
12+
13+
private String apiKey = null;
1214

1315
private Environment environment = Environment.DEFAULT;
1416

17+
/**
18+
* Sets apiKey
19+
*/
1520
public AssemblyAIBuilder apiKey(String apiKey) {
16-
this.clientOptionsBuilder.addHeader("Authorization", apiKey);
17-
this.lemurClientOptionsBuilder.addHeader("Authorization", apiKey);
21+
this.apiKey = apiKey;
1822
return this;
1923
}
2024

@@ -29,10 +33,13 @@ public AssemblyAIBuilder url(String url) {
2933
}
3034

3135
public AssemblyAI build() {
36+
if (apiKey == null) {
37+
throw new RuntimeException("Please provide apiKey");
38+
}
39+
this.clientOptionsBuilder.addHeader("Authorization", this.apiKey);
3240
clientOptionsBuilder.environment(this.environment);
33-
lemurClientOptionsBuilder
34-
.environment(this.environment)
35-
.disableTimeouts();
41+
this.lemurClientOptionsBuilder.addHeader("Authorization", this.apiKey);
42+
lemurClientOptionsBuilder.environment(this.environment);
3643
return new AssemblyAI(clientOptionsBuilder.build(), lemurClientOptionsBuilder.build());
3744
}
3845
}

src/main/java/com/assemblyai/api/core/ClientOptions.java

Lines changed: 39 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@
77
import java.util.Map;
88
import java.util.concurrent.TimeUnit;
99
import java.util.function.Supplier;
10-
1110
import okhttp3.OkHttpClient;
1211

1312
public final class ClientOptions {
13+
private boolean disableTimeouts;
14+
1415
private final Environment environment;
1516

1617
private final Map<String, String> headers;
@@ -23,17 +24,21 @@ private ClientOptions(
2324
Environment environment,
2425
Map<String, String> headers,
2526
Map<String, Supplier<String>> headerSuppliers,
26-
OkHttpClient httpClient) {
27+
OkHttpClient httpClient,
28+
boolean disableTimeouts) {
2729
this.environment = environment;
2830
this.headers = new HashMap<>();
2931
this.headers.putAll(headers);
30-
this.headers.putAll(new HashMap<String, String>() {{
31-
put("X-Fern-SDK-Name", "com.assemblyai.fern:api-sdk");
32-
put("X-Fern-SDK-Version", "1.0.2");
33-
put("X-Fern-Language", "JAVA");
34-
}});
32+
this.headers.putAll(Map.of(
33+
"X-Fern-SDK-Name",
34+
"com.assemblyai.fern:api-sdk",
35+
"X-Fern-SDK-Version",
36+
"1.0.9",
37+
"X-Fern-Language",
38+
"JAVA"));
3539
this.headerSuppliers = headerSuppliers;
3640
this.httpClient = httpClient;
41+
this.disableTimeouts = disableTimeouts;
3742
}
3843

3944
public Environment environment() {
@@ -55,6 +60,28 @@ public OkHttpClient httpClient() {
5560
return this.httpClient;
5661
}
5762

63+
public OkHttpClient httpClientWithTimeout(RequestOptions requestOptions) {
64+
if (this.disableTimeouts) {
65+
return this.httpClient
66+
.newBuilder()
67+
.callTimeout(0, TimeUnit.SECONDS)
68+
.readTimeout(0, TimeUnit.SECONDS)
69+
.build();
70+
}
71+
72+
if (requestOptions == null) {
73+
return this.httpClient;
74+
}
75+
76+
return this.httpClient
77+
.newBuilder()
78+
.callTimeout(requestOptions.getTimeout().get(), requestOptions.getTimeoutTimeUnit())
79+
.connectTimeout(0, TimeUnit.SECONDS)
80+
.writeTimeout(0, TimeUnit.SECONDS)
81+
.readTimeout(0, TimeUnit.SECONDS)
82+
.build();
83+
}
84+
5885
public static Builder builder() {
5986
return new Builder();
6087
}
@@ -65,6 +92,7 @@ public static final class Builder {
6592
private final Map<String, String> headers = new HashMap<>();
6693

6794
private final Map<String, Supplier<String>> headerSuppliers = new HashMap<>();
95+
6896
private boolean disableTimeouts = false;
6997

7098
public Builder environment(Environment environment) {
@@ -95,19 +123,10 @@ public Builder disableTimeouts() {
95123
}
96124

97125
public ClientOptions build() {
98-
OkHttpClient.Builder okhttpClientBuilder = new OkHttpClient.Builder()
99-
.addInterceptor(new RetryInterceptor(3));
100-
if (this.disableTimeouts) {
101-
okhttpClientBuilder
102-
.readTimeout(0, TimeUnit.SECONDS)
103-
.callTimeout(0, TimeUnit.SECONDS);
104-
}
105-
return new ClientOptions(
106-
environment,
107-
headers,
108-
headerSuppliers,
109-
okhttpClientBuilder.build()
110-
);
126+
OkHttpClient okhttpClient = new OkHttpClient.Builder()
127+
.addInterceptor(new RetryInterceptor(3))
128+
.build();
129+
return new ClientOptions(environment, headers, headerSuppliers, okhttpClient, this.disableTimeouts);
111130
}
112131
}
113132
}

src/main/java/com/assemblyai/api/resources/files/FilesClient.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,8 @@ public UploadedFile upload(byte[] request, RequestOptions requestOptions) {
4747
.build();
4848
try {
4949
OkHttpClient client = clientOptions.httpClient();
50-
if (requestOptions.getTimeout().isPresent()) {
51-
client = client.newBuilder()
52-
.readTimeout(requestOptions.getTimeout().get(), requestOptions.getTimeoutTimeUnit())
53-
.build();
50+
if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
51+
client = clientOptions.httpClientWithTimeout(requestOptions);
5452
}
5553
Response response = client.newCall(okhttpRequest).execute();
5654
if (response.isSuccessful()) {

src/main/java/com/assemblyai/api/resources/lemur/LemurClient.java

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,8 @@ public LemurTaskResponse task(LemurTaskParams request, RequestOptions requestOpt
6262
.build();
6363
try {
6464
OkHttpClient client = clientOptions.httpClient();
65-
if (requestOptions.getTimeout().isPresent()) {
66-
client = client.newBuilder()
67-
.readTimeout(requestOptions.getTimeout().get(), requestOptions.getTimeoutTimeUnit())
68-
.build();
65+
if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
66+
client = clientOptions.httpClientWithTimeout(requestOptions);
6967
}
7068
Response response = client.newCall(okhttpRequest).execute();
7169
if (response.isSuccessful()) {
@@ -116,10 +114,8 @@ public LemurSummaryResponse summary(LemurSummaryParams request, RequestOptions r
116114
.build();
117115
try {
118116
OkHttpClient client = clientOptions.httpClient();
119-
if (requestOptions.getTimeout().isPresent()) {
120-
client = client.newBuilder()
121-
.readTimeout(requestOptions.getTimeout().get(), requestOptions.getTimeoutTimeUnit())
122-
.build();
117+
if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
118+
client = clientOptions.httpClientWithTimeout(requestOptions);
123119
}
124120
Response response = client.newCall(okhttpRequest).execute();
125121
if (response.isSuccessful()) {
@@ -164,10 +160,8 @@ public LemurQuestionAnswerResponse questionAnswer(
164160
.build();
165161
try {
166162
OkHttpClient client = clientOptions.httpClient();
167-
if (requestOptions.getTimeout().isPresent()) {
168-
client = client.newBuilder()
169-
.readTimeout(requestOptions.getTimeout().get(), requestOptions.getTimeoutTimeUnit())
170-
.build();
163+
if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
164+
client = clientOptions.httpClientWithTimeout(requestOptions);
171165
}
172166
Response response = client.newCall(okhttpRequest).execute();
173167
if (response.isSuccessful()) {
@@ -218,10 +212,8 @@ public LemurActionItemsResponse actionItems(LemurActionItemsParams request, Requ
218212
.build();
219213
try {
220214
OkHttpClient client = clientOptions.httpClient();
221-
if (requestOptions.getTimeout().isPresent()) {
222-
client = client.newBuilder()
223-
.readTimeout(requestOptions.getTimeout().get(), requestOptions.getTimeoutTimeUnit())
224-
.build();
215+
if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
216+
client = clientOptions.httpClientWithTimeout(requestOptions);
225217
}
226218
Response response = client.newCall(okhttpRequest).execute();
227219
if (response.isSuccessful()) {
@@ -261,10 +253,8 @@ public PurgeLemurRequestDataResponse purgeRequestData(String requestId, RequestO
261253
.build();
262254
try {
263255
OkHttpClient client = clientOptions.httpClient();
264-
if (requestOptions.getTimeout().isPresent()) {
265-
client = client.newBuilder()
266-
.readTimeout(requestOptions.getTimeout().get(), requestOptions.getTimeoutTimeUnit())
267-
.build();
256+
if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
257+
client = clientOptions.httpClientWithTimeout(requestOptions);
268258
}
269259
Response response = client.newCall(okhttpRequest).execute();
270260
if (response.isSuccessful()) {

src/main/java/com/assemblyai/api/resources/realtime/RealtimeClient.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,8 @@ public RealtimeTemporaryTokenResponse createTemporaryToken(
5656
.build();
5757
try {
5858
OkHttpClient client = clientOptions.httpClient();
59-
if (requestOptions.getTimeout().isPresent()) {
60-
client = client.newBuilder()
61-
.readTimeout(requestOptions.getTimeout().get(), requestOptions.getTimeoutTimeUnit())
62-
.build();
59+
if (requestOptions != null && requestOptions.getTimeout().isPresent()) {
60+
client = clientOptions.httpClientWithTimeout(requestOptions);
6361
}
6462
Response response = client.newCall(okhttpRequest).execute();
6563
if (response.isSuccessful()) {
Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
/**
2+
* This file was auto-generated by Fern from our API Definition.
3+
*/
4+
package com.assemblyai.api.resources.realtime.types;
5+
6+
import com.assemblyai.api.core.ObjectMappers;
7+
import com.fasterxml.jackson.annotation.JsonValue;
8+
import com.fasterxml.jackson.core.JsonParseException;
9+
import com.fasterxml.jackson.core.JsonParser;
10+
import com.fasterxml.jackson.databind.DeserializationContext;
11+
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
12+
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
13+
import java.io.IOException;
14+
import java.util.Objects;
15+
16+
@JsonDeserialize(using = ReceiveMessage.Deserializer.class)
17+
public final class ReceiveMessage {
18+
private final Object value;
19+
20+
private final int type;
21+
22+
private ReceiveMessage(Object value, int type) {
23+
this.value = value;
24+
this.type = type;
25+
}
26+
27+
@JsonValue
28+
public Object get() {
29+
return this.value;
30+
}
31+
32+
public <T> T visit(Visitor<T> visitor) {
33+
if (this.type == 0) {
34+
return visitor.visit((SessionBegins) this.value);
35+
} else if (this.type == 1) {
36+
return visitor.visit((PartialTranscript) this.value);
37+
} else if (this.type == 2) {
38+
return visitor.visit((FinalTranscript) this.value);
39+
} else if (this.type == 3) {
40+
return visitor.visit((SessionTerminated) this.value);
41+
} else if (this.type == 4) {
42+
return visitor.visit((RealtimeError) this.value);
43+
}
44+
throw new IllegalStateException("Failed to visit value. This should never happen.");
45+
}
46+
47+
@java.lang.Override
48+
public boolean equals(Object other) {
49+
if (this == other) return true;
50+
return other instanceof ReceiveMessage && equalTo((ReceiveMessage) other);
51+
}
52+
53+
private boolean equalTo(ReceiveMessage other) {
54+
return value.equals(other.value);
55+
}
56+
57+
@java.lang.Override
58+
public int hashCode() {
59+
return Objects.hash(this.value);
60+
}
61+
62+
@java.lang.Override
63+
public String toString() {
64+
return this.value.toString();
65+
}
66+
67+
public static ReceiveMessage of(SessionBegins value) {
68+
return new ReceiveMessage(value, 0);
69+
}
70+
71+
public static ReceiveMessage of(PartialTranscript value) {
72+
return new ReceiveMessage(value, 1);
73+
}
74+
75+
public static ReceiveMessage of(FinalTranscript value) {
76+
return new ReceiveMessage(value, 2);
77+
}
78+
79+
public static ReceiveMessage of(SessionTerminated value) {
80+
return new ReceiveMessage(value, 3);
81+
}
82+
83+
public static ReceiveMessage of(RealtimeError value) {
84+
return new ReceiveMessage(value, 4);
85+
}
86+
87+
public interface Visitor<T> {
88+
T visit(SessionBegins value);
89+
90+
T visit(PartialTranscript value);
91+
92+
T visit(FinalTranscript value);
93+
94+
T visit(SessionTerminated value);
95+
96+
T visit(RealtimeError value);
97+
}
98+
99+
static final class Deserializer extends StdDeserializer<ReceiveMessage> {
100+
Deserializer() {
101+
super(ReceiveMessage.class);
102+
}
103+
104+
@java.lang.Override
105+
public ReceiveMessage deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
106+
Object value = p.readValueAs(Object.class);
107+
try {
108+
return of(ObjectMappers.JSON_MAPPER.convertValue(value, SessionBegins.class));
109+
} catch (IllegalArgumentException e) {
110+
}
111+
try {
112+
return of(ObjectMappers.JSON_MAPPER.convertValue(value, PartialTranscript.class));
113+
} catch (IllegalArgumentException e) {
114+
}
115+
try {
116+
return of(ObjectMappers.JSON_MAPPER.convertValue(value, FinalTranscript.class));
117+
} catch (IllegalArgumentException e) {
118+
}
119+
try {
120+
return of(ObjectMappers.JSON_MAPPER.convertValue(value, SessionTerminated.class));
121+
} catch (IllegalArgumentException e) {
122+
}
123+
try {
124+
return of(ObjectMappers.JSON_MAPPER.convertValue(value, RealtimeError.class));
125+
} catch (IllegalArgumentException e) {
126+
}
127+
throw new JsonParseException(p, "Failed to deserialize");
128+
}
129+
}
130+
}

0 commit comments

Comments
 (0)