diff --git a/.fernignore b/.fernignore index 2063f789..f714b794 100644 --- a/.fernignore +++ b/.fernignore @@ -1,6 +1,7 @@ # Specify files that shouldn't be modified by Fern src/main/java/com/assemblyai/api/AssemblyAI.java src/main/java/com/assemblyai/api/PollingTranscriptsClient.java +src/main/java/com/assemblyai/api/EnhancedLemurClient.java src/main/java/com/assemblyai/api/Transcriber.java src/main/java/com/assemblyai/api/RealtimeTranscriber.java src/main/java/com/assemblyai/api/core/Constants.java diff --git a/build.gradle b/build.gradle index f1bdc3f0..2cf462ae 100644 --- a/build.gradle +++ b/build.gradle @@ -47,7 +47,7 @@ publishing { maven(MavenPublication) { groupId = 'com.assemblyai' artifactId = 'assemblyai-java' - version = '1.2.0' + version = '2.0.0' from components.java pom { scm { diff --git a/sample-app/src/main/java/sample/App.java b/sample-app/src/main/java/sample/App.java index e01dbbc5..fef98bfe 100644 --- a/sample-app/src/main/java/sample/App.java +++ b/sample-app/src/main/java/sample/App.java @@ -70,9 +70,9 @@ public static void main(String... args) throws IOException, InterruptedException System.out.println("Summary: " + response.getResponse()); - LemurResponse response2 = client.lemur().getResponse(response.getRequestId()); + LemurTaskResponse response2 = client.lemur().getResponse(response.getRequestId(), LemurTaskResponse.class); - System.out.println("Summary 2: " + ((LemurTaskResponse)response2.get()).getResponse()); + System.out.println("Summary 2: " + response2.getResponse()); transcript = client.transcripts().delete(transcript.getId()); System.out.println("Delete transcript. " + transcript); diff --git a/src/main/java/com/assemblyai/api/AssemblyAI.java b/src/main/java/com/assemblyai/api/AssemblyAI.java index abda3a75..3b077781 100644 --- a/src/main/java/com/assemblyai/api/AssemblyAI.java +++ b/src/main/java/com/assemblyai/api/AssemblyAI.java @@ -20,14 +20,10 @@ public class AssemblyAI { protected final Supplier realtimeClient; - protected final Supplier lemurClient; + protected final Supplier lemurClient; public AssemblyAI(ClientOptions clientOptions) { - this.clientOptions = clientOptions; - this.filesClient = Suppliers.memoize(() -> new FilesClient(clientOptions)); - this.transcriptClient = Suppliers.memoize(() -> new PollingTranscriptsClient(clientOptions, this)); - this.realtimeClient = Suppliers.memoize(() -> new RealtimeClient(clientOptions)); - this.lemurClient = Suppliers.memoize(() -> new LemurClient(clientOptions)); + this(clientOptions, clientOptions); } public AssemblyAI(ClientOptions clientOptions, ClientOptions lemurClientOptions) { @@ -35,7 +31,7 @@ public AssemblyAI(ClientOptions clientOptions, ClientOptions lemurClientOptions) this.filesClient = Suppliers.memoize(() -> new FilesClient(clientOptions)); this.transcriptClient = Suppliers.memoize(() -> new PollingTranscriptsClient(clientOptions, this)); this.realtimeClient = Suppliers.memoize(() -> new RealtimeClient(clientOptions)); - this.lemurClient = Suppliers.memoize(() -> new LemurClient(lemurClientOptions)); + this.lemurClient = Suppliers.memoize(() -> new EnhancedLemurClient(lemurClientOptions)); } public FilesClient files() { @@ -50,7 +46,7 @@ public RealtimeClient realtime() { return this.realtimeClient.get(); } - public LemurClient lemur() { + public EnhancedLemurClient lemur() { return this.lemurClient.get(); } diff --git a/src/main/java/com/assemblyai/api/EnhancedLemurClient.java b/src/main/java/com/assemblyai/api/EnhancedLemurClient.java new file mode 100644 index 00000000..51099663 --- /dev/null +++ b/src/main/java/com/assemblyai/api/EnhancedLemurClient.java @@ -0,0 +1,58 @@ +package com.assemblyai.api; + +import com.assemblyai.api.core.ApiError; +import com.assemblyai.api.core.ClientOptions; +import com.assemblyai.api.core.ObjectMappers; +import com.assemblyai.api.core.RequestOptions; +import com.assemblyai.api.resources.lemur.LemurClient; +import com.assemblyai.api.resources.lemur.types.ILemurBaseResponse; +import okhttp3.*; + +import java.io.IOException; + +public final class EnhancedLemurClient extends LemurClient { + public EnhancedLemurClient(ClientOptions clientOptions) { + super(clientOptions); + } + + /** + * Retrieve a LeMUR response that was previously generated. + */ + public T getResponse(String requestId, Class responseType) { + return this.getResponse(requestId, responseType, null); + } + + /** + * Retrieve a LeMUR response that was previously generated. + */ + public T getResponse(String requestId, Class responseType, RequestOptions requestOptions) { + HttpUrl httpUrl = HttpUrl.parse(this.clientOptions.environment().getUrl()) + .newBuilder() + .addPathSegments("lemur/v3") + .addPathSegment(requestId) + .build(); + Request okhttpRequest = new Request.Builder() + .url(httpUrl) + .method("GET", null) + .headers(Headers.of(clientOptions.headers(requestOptions))) + .addHeader("Content-Type", "application/json") + .build(); + try { + OkHttpClient client = clientOptions.httpClient(); + if (requestOptions != null && requestOptions.getTimeout().isPresent()) { + client = clientOptions.httpClientWithTimeout(requestOptions); + } + Response response = client.newCall(okhttpRequest).execute(); + ResponseBody responseBody = response.body(); + if (response.isSuccessful()) { + return ObjectMappers.JSON_MAPPER.readValue(responseBody.string(), responseType); + } + throw new ApiError( + response.code(), + ObjectMappers.JSON_MAPPER.readValue( + responseBody != null ? responseBody.string() : "{}", Object.class)); + } catch (IOException e) { + throw new RuntimeException(e); + } + } +} diff --git a/src/main/java/com/assemblyai/api/core/Constants.java b/src/main/java/com/assemblyai/api/core/Constants.java index 7f2e0719..d61faeca 100644 --- a/src/main/java/com/assemblyai/api/core/Constants.java +++ b/src/main/java/com/assemblyai/api/core/Constants.java @@ -1,5 +1,5 @@ package com.assemblyai.api.core; public class Constants { - public static final String SDK_VERSION = "1.1.3"; + public static final String SDK_VERSION = "2.0.0"; }