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