11package jamgmilk.fuwagit.core.util
22
3+ import androidx.annotation.StringRes
4+ import jamgmilk.fuwagit.R
5+
36object UrlUtils {
47
58 data class UrlValidationResult (
69 val isValid : Boolean ,
710 val isSsh : Boolean ,
811 val isHttps : Boolean ,
9- val errorMessage : String ? = null
12+ @StringRes val errorMessage : Int ? = null
1013 )
1114
1215 fun validateUrl (url : String ): UrlValidationResult {
@@ -17,7 +20,7 @@ object UrlUtils {
1720 return when {
1821 url.startsWith(" https://" ) || url.startsWith(" http://" ) -> {
1922 if (url.contains(" " ) || ! url.contains(" ." ) || url.length < 10 ) {
20- UrlValidationResult (isValid = false , isSsh = false , isHttps = true , errorMessage = " Invalid HTTPS URL format " )
23+ UrlValidationResult (isValid = false , isSsh = false , isHttps = true , errorMessage = R .string.url_validation_invalid_https )
2124 } else {
2225 UrlValidationResult (isValid = true , isSsh = false , isHttps = true )
2326 }
@@ -27,14 +30,14 @@ object UrlUtils {
2730 if (gitHostPattern.matches(url)) {
2831 UrlValidationResult (isValid = true , isSsh = true , isHttps = false )
2932 } else {
30- UrlValidationResult (isValid = false , isSsh = true , isHttps = false , errorMessage = " Invalid SSH format (expected: git@host:path) " )
33+ UrlValidationResult (isValid = false , isSsh = true , isHttps = false , errorMessage = R .string.url_validation_invalid_ssh )
3134 }
3235 }
3336 url.startsWith(" ssh://" ) -> {
3437 UrlValidationResult (isValid = true , isSsh = true , isHttps = false )
3538 }
3639 else -> {
37- UrlValidationResult (isValid = false , isSsh = false , isHttps = false , errorMessage = " URL must start with https://, http://, git@, ssh:// " )
40+ UrlValidationResult (isValid = false , isSsh = false , isHttps = false , errorMessage = R .string.url_validation_invalid_protocol )
3841 }
3942 }
4043 }
0 commit comments