Skip to content

Commit

Permalink
feat!: Split translateDocument into two methods, just like translate
Browse files Browse the repository at this point in the history
BREAKING CHANGE: Rename `translateDocument` to `translateDocumentText`
BREAKING CHANGE: Add new `translateDocument` method which now returns `DocumentTranslation`
  • Loading branch information
Micha-ohne-el committed Nov 12, 2023
1 parent 6597463 commit 80b3d33
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 7 deletions.
20 changes: 17 additions & 3 deletions src/commonMain/kotlin/moe/micha/deeplkt/DeeplClient.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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/"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package moe.micha.deeplkt.document

data class DocumentTranslation(
val text: String,
val billedCharacters: Int?,
)
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -89,7 +89,7 @@ class TranslateDocumentTest : StringSpec() {
respond<DocumentResponse>(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 ->
Expand All @@ -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)
Expand All @@ -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

Expand Down

0 comments on commit 80b3d33

Please sign in to comment.