Skip to content

Commit 3b2e3fa

Browse files
committed
Make FilterType use enums
1 parent 06e82ed commit 3b2e3fa

File tree

7 files changed

+43
-17
lines changed

7 files changed

+43
-17
lines changed

gradle/libs.versions.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
[versions]
2-
kotlin = "1.6.10"
2+
kotlin = "1.7.20"
33
detekt = "1.19.0"
44
moshi = "1.12.0"
55
retrofit = "2.9.0"
66
okhttp = "4.9.3"
77

88
[libraries]
9-
android-buildTools = "com.android.tools.build:gradle:7.1.0"
9+
android-buildTools = "com.android.tools.build:gradle:7.3.0"
1010

1111
kotlin-gradle = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
1212
kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" }

src/main/kotlin/com/hyperdevs/poeditor/gradle/Main.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
package com.hyperdevs.poeditor.gradle
2020

21+
import com.hyperdevs.poeditor.gradle.network.api.FilterType
2122
import io.github.cdimascio.dotenv.Dotenv
2223

2324
/**
@@ -37,6 +38,7 @@ fun main() {
3738
.takeIf { it.isNotBlank() }
3839
?.split(",")
3940
?.map { it.trim() }
41+
?.map { FilterType.from(it) }
4042
?: emptyList()
4143
val tags = dotenv.get("TAGS", "")
4244
.takeIf { it.isNotBlank() }

src/main/kotlin/com/hyperdevs/poeditor/gradle/PoEditorStringsImporter.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ package com.hyperdevs.poeditor.gradle
2121
import com.hyperdevs.poeditor.gradle.ktx.downloadUrlToString
2222
import com.hyperdevs.poeditor.gradle.network.PoEditorApiControllerImpl
2323
import com.hyperdevs.poeditor.gradle.network.api.ExportType
24+
import com.hyperdevs.poeditor.gradle.network.api.FilterType
2425
import com.hyperdevs.poeditor.gradle.network.api.PoEditorApi
2526
import com.hyperdevs.poeditor.gradle.network.api.ProjectLanguage
2627
import com.hyperdevs.poeditor.gradle.utils.TABLET_REGEX_STRING
@@ -62,7 +63,7 @@ object PoEditorStringsImporter {
6263
logger.debug(message)
6364
}
6465
})
65-
.setLevel(HttpLoggingInterceptor.Level.HEADERS))
66+
.setLevel(HttpLoggingInterceptor.Level.BODY))
6667
.build()
6768

6869
private val retrofit = Retrofit.Builder()
@@ -85,7 +86,7 @@ object PoEditorStringsImporter {
8586
projectId: Int,
8687
defaultLang: String,
8788
resDirPath: String,
88-
filters: List<String>,
89+
filters: List<FilterType>,
8990
tags: List<String>,
9091
languageValuesOverridePathMap: Map<String, String>,
9192
minimumTranslationPercentage: Int) {
@@ -100,7 +101,7 @@ object PoEditorStringsImporter {
100101
// Iterate over every available language
101102
logger.lifecycle("Available languages: ${projectLanguages.joinAndFormat { it.code }}")
102103

103-
if (minimumTranslationPercentage > -1) {
104+
if (minimumTranslationPercentage >= 0) {
104105
val skippedLanguagesMessage = if (skippedLanguages.isEmpty()) {
105106
"All languages are translated above the minimum of $minimumTranslationPercentage%"
106107
} else {
@@ -147,7 +148,7 @@ object PoEditorStringsImporter {
147148
}
148149
} catch (e: Exception) {
149150
logger.error("An error happened when retrieving strings from project. " +
150-
"Please review the plug-in's input parameters and try again")
151+
"Please review the plug-in's input parameters and try again")
151152
throw e
152153
}
153154
}

src/main/kotlin/com/hyperdevs/poeditor/gradle/network/PoEditorApiController.kt

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,7 @@
1818

1919
package com.hyperdevs.poeditor.gradle.network
2020

21-
import com.hyperdevs.poeditor.gradle.network.api.ExportType
22-
import com.hyperdevs.poeditor.gradle.network.api.PoEditorApi
23-
import com.hyperdevs.poeditor.gradle.network.api.PoEditorResponse
24-
import com.hyperdevs.poeditor.gradle.network.api.ProjectLanguage
21+
import com.hyperdevs.poeditor.gradle.network.api.*
2522
import retrofit2.Response
2623

2724
/**
@@ -40,7 +37,7 @@ interface PoEditorApiController {
4037
fun getTranslationFileUrl(projectId: Int,
4138
code: String,
4239
type: ExportType,
43-
filters: List<String>?,
40+
filters: List<FilterType>?,
4441
tags: List<String>?): String
4542
}
4643

@@ -59,13 +56,13 @@ class PoEditorApiControllerImpl(private val apiToken: String,
5956
override fun getTranslationFileUrl(projectId: Int,
6057
code: String,
6158
type: ExportType,
62-
filters: List<String>?,
59+
filters: List<FilterType>?,
6360
tags: List<String>?): String {
6461
val response = poEditorApi.getExportFileInfo(
6562
apiToken = apiToken,
6663
id = projectId,
6764
type = type.toString().toLowerCase(),
68-
filters = filters,
65+
filters = filters?.map { it.name.toLowerCase() },
6966
language = code,
7067
tags = tags)
7168
.execute()

src/main/kotlin/com/hyperdevs/poeditor/gradle/network/api/PoEditorApi.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ interface PoEditorApi {
4141
*/
4242
@Suppress("LongParameterList")
4343
@FormUrlEncoded
44+
@JvmSuppressWildcards
4445
@POST("projects/export")
4546
fun getExportFileInfo(@Field("api_token") apiToken: String,
4647
@Field("id") id: Int,

src/main/kotlin/com/hyperdevs/poeditor/gradle/network/api/PoEditorApiModels.kt

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818

1919
package com.hyperdevs.poeditor.gradle.network.api
2020

21+
import com.squareup.moshi.Json
22+
import java.lang.IllegalArgumentException
2123
import java.util.Date
2224

2325
/**
@@ -91,25 +93,47 @@ enum class ExportType {
9193

9294
companion object {
9395
/** Returns the enum value associated to a string value. */
94-
fun from(filterString: String) = valueOf(filterString.toUpperCase())
96+
fun from(value: String) =
97+
try {
98+
valueOf(value.toUpperCase())
99+
} catch (e: Exception) {
100+
val message = "Value \"$value\" is not a valid ${this::class.java.declaringClass.simpleName}; " +
101+
"allowed values are: ${values().joinToString(", ") { "\"${it.name.toLowerCase()}\"" }}"
102+
throw IllegalArgumentException(message)
103+
}
95104
}
96105
}
97106

98107
/**
99108
* Filter types to use in file exports.
100109
*/
101110
enum class FilterType {
111+
@Json(name = "translated")
102112
TRANSLATED,
113+
@Json(name = "untranslated")
103114
UNTRANSLATED,
115+
@Json(name = "fuzzy")
104116
FUZZY,
117+
@Json(name = "not_fuzzy")
105118
NOT_FUZZY,
119+
@Json(name = "automatic")
106120
AUTOMATIC,
121+
@Json(name = "not_automatic")
107122
NOT_AUTOMATIC,
123+
@Json(name = "proofread")
108124
PROOFREAD,
125+
@Json(name = "not_proofread")
109126
NOT_PROOFREAD;
110127

111128
companion object {
112129
/** Returns the enum value associated to a string value. */
113-
fun from(filterString: String) = valueOf(filterString.toUpperCase())
130+
fun from(value: String) =
131+
try {
132+
valueOf(value.toUpperCase())
133+
} catch (e: Exception) {
134+
val message = "Value \"$value\" is not a valid ${this::class.java.declaringClass.simpleName}; " +
135+
"allowed values are: ${values().joinToString(", ") { "\"${it.name.toLowerCase()}\"" }}"
136+
throw IllegalArgumentException(message)
137+
}
114138
}
115139
}

src/main/kotlin/com/hyperdevs/poeditor/gradle/tasks/ImportPoEditorStringsTask.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ package com.hyperdevs.poeditor.gradle.tasks
2020

2121
import com.hyperdevs.poeditor.gradle.PoEditorPluginExtension
2222
import com.hyperdevs.poeditor.gradle.PoEditorStringsImporter
23+
import com.hyperdevs.poeditor.gradle.network.api.FilterType
2324
import com.hyperdevs.poeditor.gradle.utils.DEFAULT_PLUGIN_NAME
2425
import com.hyperdevs.poeditor.gradle.utils.POEDITOR_CONFIG_NAME
2526
import org.gradle.api.DefaultTask
@@ -45,7 +46,7 @@ abstract class ImportPoEditorStringsTask
4546
val projectId: Int
4647
val defaultLang: String
4748
val defaultResPath: String
48-
val filters: List<String>
49+
val filters: List<FilterType>
4950
val tags: List<String>
5051
val languageOverridePathMap: Map<String, String>
5152
val minimumTranslationPercentage: Int
@@ -55,7 +56,7 @@ abstract class ImportPoEditorStringsTask
5556
projectId = extension.projectId.get()
5657
defaultLang = extension.defaultLang.get()
5758
defaultResPath = extension.defaultResPath.get()
58-
filters = extension.filters.get()
59+
filters = extension.filters.get().map { FilterType.from(it) }
5960
tags = extension.tags.get()
6061
languageOverridePathMap = extension.languageValuesOverridePathMap.get()
6162
minimumTranslationPercentage = extension.minimumTranslationPercentage.get()

0 commit comments

Comments
 (0)