diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml
index d98aeb6..9e47a7e 100644
--- a/.github/workflows/build_and_test.yml
+++ b/.github/workflows/build_and_test.yml
@@ -19,14 +19,14 @@ jobs:
strategy:
matrix:
# test against latest update of each major Java version, as well as specific updates of LTS versions:
- java: [8, 11.0.x, 13 ]
+ java: [8, 11, 17 ]
steps:
- name: Checkout the code
- uses: actions/checkout@v2
+ uses: actions/checkout@v4
- name: Cache the maven artifacts
- uses: actions/cache@v1
+ uses: actions/cache@v4
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
@@ -34,8 +34,9 @@ jobs:
${{ runner.os }}-maven-
- name: Configure java
- uses: actions/setup-java@v1
+ uses: actions/setup-java@v4
with:
+ distribution: temurin
java-version: ${{ matrix.java }}
- name: Build and run tests
@@ -53,9 +54,9 @@ jobs:
run: mkdir staging && cp target/*.jar staging
- name: Upload build artifacts
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
- name: Package
+ name: Package-java-${{ matrix.java }}
path: staging
- name: Notify slack fail
diff --git a/examples/AsyncTranscribeMediaUrl.java b/examples/AsyncTranscribeMediaUrl.java
index 66ae7ac..fc5663c 100644
--- a/examples/AsyncTranscribeMediaUrl.java
+++ b/examples/AsyncTranscribeMediaUrl.java
@@ -53,7 +53,7 @@ public static void main(String[] args) {
revAiJobOptions.setSpeakerChannelsCount(null);
revAiJobOptions.setDeleteAfterSeconds(2592000); // 30 days in seconds
revAiJobOptions.setLanguage("en");
- revAiJobOptions.setTranscriber("machine_v2");
+ revAiJobOptions.setTranscriber("machine_v3");
RevAiJob submittedJob;
diff --git a/pom.xml b/pom.xml
index f32336f..827df1b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
ai.rev
revai-java-sdk
- 2.5.0
+ 2.6.0
Rev AI SDK for Java
Java SDK for Rev AI API
https://docs.rev.ai/
diff --git a/src/main/java/ai/rev/speechtotext/ApiClient.java b/src/main/java/ai/rev/speechtotext/ApiClient.java
index 2faac32..41d1b91 100755
--- a/src/main/java/ai/rev/speechtotext/ApiClient.java
+++ b/src/main/java/ai/rev/speechtotext/ApiClient.java
@@ -284,7 +284,12 @@ public RevAiJob submitJobUrl(String mediaUrl, RevAiJobOptions options) throws IO
if (options == null) {
options = new RevAiJobOptions();
}
- options.setMediaUrl(mediaUrl);
+ if (options.getSourceConfig() != null) {
+ throw new IllegalArgumentException(
+ "source_config is not compatible with submitJobUrl. "
+ + "Remove source_config from options or use submitJobUrl(RevAiJobOptions) instead.");
+ }
+ options.setSourceConfig(mediaUrl);
return apiInterface.submitJobUrl(options).execute().body();
}
diff --git a/src/test/java/ai/rev/speechtotext/integration/SubmitJobTest.java b/src/test/java/ai/rev/speechtotext/integration/SubmitJobTest.java
index 3b38020..9c8e847 100644
--- a/src/test/java/ai/rev/speechtotext/integration/SubmitJobTest.java
+++ b/src/test/java/ai/rev/speechtotext/integration/SubmitJobTest.java
@@ -172,6 +172,18 @@ public void SubmitJobUrl_OnlyUrlIsSpecified_ReturnsRevAiJobInProgress() throws I
assertRevAiJob(revAiJob);
}
+
+ @Test
+ public void SubmitJobUrl_WithMachineV3_ReturnsRevAiJobInProgress() throws IOException {
+ RevAiJobOptions revAiJobOptions = new RevAiJobOptions();
+ revAiJobOptions.setMetadata(testName.getMethodName());
+ revAiJobOptions.setTranscriber("machine_v3");
+
+ RevAiJob revAiJob = apiClient.submitJobUrl(SOURCE_URL, revAiJobOptions);
+
+ assertRevAiJob(revAiJob);
+ }
+
@Test
public void SubmitJobLocalFile_SummarizationOptionsSpecified_ReturnsRevAiJobInProgress()
throws IOException, InterruptedException {
diff --git a/src/test/java/ai/rev/speechtotext/unit/RevAiJobTest.java b/src/test/java/ai/rev/speechtotext/unit/RevAiJobTest.java
index cca8a1a..93d147c 100644
--- a/src/test/java/ai/rev/speechtotext/unit/RevAiJobTest.java
+++ b/src/test/java/ai/rev/speechtotext/unit/RevAiJobTest.java
@@ -226,24 +226,37 @@ public void SubmitJobUrl_UrlAndOptionsAreSpecified_WithAuthHeaders_ReturnsARevAi
assertRevAiJob(revAiJob, mockInProgressJob);
}
+
@Test
- public void SubmitJobUrl_NullOptions_ReturnsIllegalArgumentException() {
+ public void SubmitJobUrl_DeprecatedWithSourceConfigUrl_ThrowsIllegalArgumentException() {
+ RevAiJobOptions options = new RevAiJobOptions();
+ options.setSourceConfig("existing-url.com");
assertThatExceptionOfType(IllegalArgumentException.class)
- .isThrownBy(() -> sut.submitJobUrl((RevAiJobOptions) null));
+ .isThrownBy(() -> sut.submitJobUrl("another-url.com", options));
}
@Test
- public void SubmitJobUrl_NullSourceConfig_ReturnsIllegalArgumentException() {
+ public void SubmitJobUrl_DeprecatedWithSourceConfigAuthHeaders_ThrowsIllegalArgumentException() {
+ RevAiJobOptions options = new RevAiJobOptions();
+ options.setSourceConfig(null, SOURCE_AUTH);
assertThatExceptionOfType(IllegalArgumentException.class)
- .isThrownBy(() -> sut.submitJobUrl(new RevAiJobOptions()));
+ .isThrownBy(() -> sut.submitJobUrl(SOURCE_URL, options));
}
@Test
- public void SubmitJobUrl_NullSourceConfigUrl_ReturnsIllegalArgumentException() {
+ public void SubmitJobUrl_DeprecatedUrlAndOptions_SendsSourceConfig() throws IOException {
+ mockInterceptor.setSampleResponse(gson.toJson(mockInProgressJob));
RevAiJobOptions options = new RevAiJobOptions();
- options.setSourceConfig(null, null);
- assertThatExceptionOfType(IllegalArgumentException.class)
- .isThrownBy(() -> sut.submitJobUrl(options));
+ options.setMetadata(METADATA);
+
+ RevAiJob revAiJob = sut.submitJobUrl(SOURCE_URL, options);
+
+ RevAiJobOptions expectedOptions = new RevAiJobOptions();
+ expectedOptions.setSourceConfig(SOURCE_URL);
+ expectedOptions.setMetadata(METADATA);
+ AssertHelper.assertRequestBody(mockInterceptor, expectedOptions, RevAiJobOptions.class);
+ AssertHelper.assertRequestMethodAndUrl(mockInterceptor, "POST", JOBS_URL);
+ assertRevAiJob(revAiJob, mockInProgressJob);
}
@Test