Xwite %!s(int64=4) %!d(string=hai) anos
pai
achega
ca4b5cc6a4

+ 5 - 21
app/src/main/java/io/legado/app/utils/NetworkUtils.kt

@@ -4,7 +4,6 @@ import android.net.ConnectivityManager
 import android.net.NetworkCapabilities
 import android.net.NetworkCapabilities
 import android.os.Build
 import android.os.Build
 import io.legado.app.constant.AppLog
 import io.legado.app.constant.AppLog
-import io.legado.app.constant.AppPattern
 import okhttp3.internal.publicsuffix.PublicSuffixDatabase
 import okhttp3.internal.publicsuffix.PublicSuffixDatabase
 import splitties.systemservices.connectivityManager
 import splitties.systemservices.connectivityManager
 
 
@@ -13,8 +12,8 @@ import java.net.NetworkInterface
 import java.net.SocketException
 import java.net.SocketException
 import java.net.URL
 import java.net.URL
 import java.util.*
 import java.util.*
-import java.util.regex.Pattern
 
 
+import cn.hutool.core.lang.Validator
 
 
 @Suppress("unused", "MemberVisibilityCanBePrivate")
 @Suppress("unused", "MemberVisibilityCanBePrivate")
 object NetworkUtils {
 object NetworkUtils {
@@ -113,7 +112,7 @@ object NetworkUtils {
     fun getAbsoluteURL(baseURL: String?, relativePath: String): String {
     fun getAbsoluteURL(baseURL: String?, relativePath: String): String {
         if (baseURL.isNullOrEmpty()) return relativePath
         if (baseURL.isNullOrEmpty()) return relativePath
         if (relativePath.isAbsUrl()) return relativePath
         if (relativePath.isAbsUrl()) return relativePath
-        if (relativePath.matches(AppPattern.dataUriRegex)) return relativePath
+        if (relativePath.isDataUrl()) return relativePath
         if (relativePath.startsWith("javascript")) return ""
         if (relativePath.startsWith("javascript")) return ""
         var relativeUrl = relativePath
         var relativeUrl = relativePath
         try {
         try {
@@ -133,7 +132,7 @@ object NetworkUtils {
     fun getAbsoluteURL(baseURL: URL?, relativePath: String): String {
     fun getAbsoluteURL(baseURL: URL?, relativePath: String): String {
         if (baseURL == null) return relativePath
         if (baseURL == null) return relativePath
         if (relativePath.isAbsUrl()) return relativePath
         if (relativePath.isAbsUrl()) return relativePath
-        if (relativePath.matches(AppPattern.dataUriRegex)) return relativePath
+        if (relativePath.isDataUrl()) return relativePath
         if (relativePath.startsWith("javascript")) return ""
         if (relativePath.startsWith("javascript")) return ""
         var relativeUrl = relativePath
         var relativeUrl = relativePath
         try {
         try {
@@ -214,14 +213,14 @@ object NetworkUtils {
      * @return True if the input parameter is a valid IPv4 address.
      * @return True if the input parameter is a valid IPv4 address.
      */
      */
     fun isIPv4Address(input: String?): Boolean {
     fun isIPv4Address(input: String?): Boolean {
-        return input != null && IPV4_PATTERN.matcher(input).matches()
+        return input != null && Validator.isIpv4(input)
     }
     }
 
 
     /**
     /**
      * Check if valid IPV6 address.
      * Check if valid IPV6 address.
      */
      */
     fun isIPv6Address(input: String?): Boolean {
     fun isIPv6Address(input: String?): Boolean {
-        return input != null && IPV6_PATTERN.matcher(input).matches()
+        return input != null && Validator.isIpv6(input)
     }
     }
 
 
     /**
     /**
@@ -231,19 +230,4 @@ object NetworkUtils {
         return isIPv4Address(input) || isIPv6Address(input)
         return isIPv4Address(input) || isIPv6Address(input)
     }
     }
 
 
-    /**
-     * Ipv4 address check.
-     */
-    private val IPV4_PATTERN = Pattern.compile(
-        "^(" + "([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}" +
-                "([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"
-    )
-
-    /**
-     * Ipv6 address check.
-     */
-    private val IPV6_PATTERN = Pattern.compile(
-        "^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:)(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$"
-    )
-
 }
 }

+ 2 - 2
app/src/main/java/io/legado/app/utils/SvgUtils.kt

@@ -46,9 +46,9 @@ object SvgUtils {
     }
     }
 
 
     /////// private method
     /////// private method
-    private fun createBitmap(svg: SVG, width: Int, height: Int? = null): Bitmap {
+    private fun createBitmap(svg: SVG, width: Int? = null, height: Int? = null): Bitmap {
         val size = getSize(svg)
         val size = getSize(svg)
-        val wRatio = width.let { size.width / it } ?: -1
+        val wRatio = width?.let { size.width / it } ?: -1
         val hRatio = height?.let { size.height / it } ?: -1
         val hRatio = height?.let { size.height / it } ?: -1
         //如果超出指定大小,则缩小相应的比例
         //如果超出指定大小,则缩小相应的比例
         val ratio = when {
         val ratio = when {