From 80b3d335f0eb97ec64804bdb3bc06f066443fab9 Mon Sep 17 00:00:00 2001 From: Micha Lehmann Date: Sun, 12 Nov 2023 17:30:14 +0100 Subject: [PATCH] feat!: Split `translateDocument` into two methods, just like `translate` BREAKING CHANGE: Rename `translateDocument` to `translateDocumentText` BREAKING CHANGE: Add new `translateDocument` method which now returns `DocumentTranslation` --- .../kotlin/moe/micha/deeplkt/DeeplClient.kt | 20 ++++++++++++++++--- .../deeplkt/document/DocumentTranslation.kt | 6 ++++++ .../micha/deeplkt/TranslateDocumentTest.kt | 8 ++++---- 3 files changed, 27 insertions(+), 7 deletions(-) create mode 100644 src/commonMain/kotlin/moe/micha/deeplkt/document/DocumentTranslation.kt diff --git a/src/commonMain/kotlin/moe/micha/deeplkt/DeeplClient.kt b/src/commonMain/kotlin/moe/micha/deeplkt/DeeplClient.kt index 4376cce..74c05eb 100644 --- a/src/commonMain/kotlin/moe/micha/deeplkt/DeeplClient.kt +++ b/src/commonMain/kotlin/moe/micha/deeplkt/DeeplClient.kt @@ -24,6 +24,7 @@ import moe.micha.deeplkt.document.DocumentResponse import moe.micha.deeplkt.document.DocumentResponse.Done import moe.micha.deeplkt.document.DocumentResponse.Error import moe.micha.deeplkt.document.DocumentResponse.InProgress +import moe.micha.deeplkt.document.DocumentTranslation import moe.micha.deeplkt.document.UploadDocumentResponse import moe.micha.deeplkt.internal.QuotaExceeded import moe.micha.deeplkt.internal.append @@ -99,14 +100,27 @@ class DeeplClient( to: TargetLang, from: SourceLang? = null, formality: Formality? = null, - ): String { + ): DocumentTranslation { val (id, key) = uploadDocument(content, fileName, to, from, formality) - awaitDocumentTranslation(id, key) + val result = awaitDocumentTranslation(id, key) - return downloadDocumentTranslation(id, key) + val text = downloadDocumentTranslation(id, key) + + return DocumentTranslation( + text, + result.billedCharacters, + ) } + suspend fun translateDocumentText( + content: String, + fileName: String, + to: TargetLang, + from: SourceLang? = null, + formality: Formality? = null, + ): String = translateDocument(content, fileName, to, from, formality).text + private val apiUrl = apiUrl ?: if (authKey.endsWith(":fx")) { "https://api-free.deepl.com/v2/" diff --git a/src/commonMain/kotlin/moe/micha/deeplkt/document/DocumentTranslation.kt b/src/commonMain/kotlin/moe/micha/deeplkt/document/DocumentTranslation.kt new file mode 100644 index 0000000..b30b2fd --- /dev/null +++ b/src/commonMain/kotlin/moe/micha/deeplkt/document/DocumentTranslation.kt @@ -0,0 +1,6 @@ +package moe.micha.deeplkt.document + +data class DocumentTranslation( + val text: String, + val billedCharacters: Int?, +) diff --git a/src/commonTest/kotlin/moe/micha/deeplkt/TranslateDocumentTest.kt b/src/commonTest/kotlin/moe/micha/deeplkt/TranslateDocumentTest.kt index 9554b13..ea07613 100644 --- a/src/commonTest/kotlin/moe/micha/deeplkt/TranslateDocumentTest.kt +++ b/src/commonTest/kotlin/moe/micha/deeplkt/TranslateDocumentTest.kt @@ -67,7 +67,7 @@ class TranslateDocumentTest : StringSpec() { } "checks status of document" { - client.translateDocument(content = "test content", fileName = "test.txt", to = TargetLang.Dutch) + client.translateDocumentText(content = "test content", fileName = "test.txt", to = TargetLang.Dutch) val request = engineSpy.requestHistory[1] request.url.encodedPath shouldBe "/v2/document/$documentId" @@ -89,7 +89,7 @@ class TranslateDocumentTest : StringSpec() { respond(iterator.next()) } - client.translateDocument(content = "test content", fileName = "test.txt", to = TargetLang.Dutch) + client.translateDocumentText(content = "test content", fileName = "test.txt", to = TargetLang.Dutch) val requests = engineSpy.requestHistory.slice(1..5) requests.forAll { request -> @@ -116,7 +116,7 @@ class TranslateDocumentTest : StringSpec() { } shouldThrowMessage("test error message") { - client.translateDocument(content = "test content", fileName = "test.txt", to = TargetLang.Dutch) + client.translateDocumentText(content = "test content", fileName = "test.txt", to = TargetLang.Dutch) } val requests = engineSpy.requestHistory.slice(1..5) @@ -132,7 +132,7 @@ class TranslateDocumentTest : StringSpec() { "downloads translation upon success" { val result = - client.translateDocument(content = "test content", fileName = "test.txt", to = TargetLang.Dutch) + client.translateDocumentText(content = "test content", fileName = "test.txt", to = TargetLang.Dutch) result shouldBe successfulResult