fix: reject bare .dz source URLs and make extension validation case-insensitive
A bare .dz file (DictZip without the .dsl prefix) is treated by the pipeline as an orphaned file and deleted right after the download, so a .dz source URL passed validation but silently produced no dictionary. Accept only DictZip-compressed DSL (.dsl.dz; .gz already covers .dsl.gz) and compare extensions case-insensitively.
This commit is contained in:
1 parent
59115ff9a3
commit
1d84eaf9c0
3 files changed
+6
-3
No files matched your search
@@ -102,12 +102,15 @@ data class DictionarySource(
|
||||
|
||||
fun validateTemplate(template: String): ValidationResult {
|
||||
val trimmed = template.trim()
|
||||
val lowerTemplate = trimmed.lowercase()
|
||||
return when {
|
||||
trimmed.isBlank() -> ValidationResult.Error(ValidationError.EMPTY)
|
||||
trimmed.length > 2048 -> ValidationResult.Error(ValidationError.TOO_LONG)
|
||||
!trimmed.startsWith("http://") && !trimmed.startsWith("https://") ->
|
||||
ValidationResult.Error(ValidationError.INVALID_PROTOCOL)
|
||||
!trimmed.endsWith(".gz") && !trimmed.endsWith(".dsl") && !trimmed.endsWith(".dz") ->
|
||||
!lowerTemplate.endsWith(".gz") &&
|
||||
!lowerTemplate.endsWith(".dsl") &&
|
||||
!lowerTemplate.endsWith(".dsl.dz") ->
|
||||
ValidationResult.Error(ValidationError.INVALID_EXTENSION)
|
||||
!isValidUrlStructure(trimmed) ->
|
||||
ValidationResult.Error(ValidationError.INVALID_URL_STRUCTURE)
|
||||
|
||||
Reference in new issue
Block a user