diff --git a/.idea/gradle.xml b/.idea/gradle.xml index eb20a8e..bf2bb41 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -4,7 +4,7 @@ diff --git a/app/src/main/java/xyz/fycz/myreader/util/help/JSExtensions.kt b/app/src/main/java/xyz/fycz/myreader/util/help/JSExtensions.kt deleted file mode 100644 index 60e8c4e..0000000 --- a/app/src/main/java/xyz/fycz/myreader/util/help/JSExtensions.kt +++ /dev/null @@ -1,365 +0,0 @@ -package xyz.fycz.myreader.util.help - -import android.util.Base64 -import android.util.Log -import androidx.annotation.Keep -import org.jsoup.Connection -import org.jsoup.Jsoup -import xyz.fycz.myreader.greendao.service.CookieStore -import xyz.fycz.myreader.model.third2.analyzeRule.AnalyzeUrl -import xyz.fycz.myreader.util.ZipUtils -import xyz.fycz.myreader.util.utils.* -import java.io.File -import java.io.IOException -import java.net.URLEncoder -import java.text.SimpleDateFormat -import java.util.* - -/** - * @author fengyue - * @date 2021/5/15 19:26 - */ -@Keep -@Suppress("unused") -interface JSExtensions { - /** - * js实现跨域访问,不能删 - */ - fun ajax(urlStr: String?): String? { - return try { - val analyzeUrl = AnalyzeUrl(urlStr) - OkHttpUtils.getStrResponse(analyzeUrl).blockingFirst().body() - } catch (e: Exception) { - e.localizedMessage - } - } - - - /** - * js实现压缩文件解压 - */ - fun unzipFile(zipPath: String): String { - if (zipPath.isEmpty()) return "" - val unzipPath = FileUtils.getCachePath() + File.separator + FileUtils.getNameExcludeExtension(zipPath) - FileUtils.deleteFile(unzipPath) - val zipFile = FileUtils.getFile(zipPath) - val unzipFolder = FileUtils.getFolder(unzipPath) - ZipUtils.unzipFile(zipFile, unzipFolder) - FileUtils.deleteFile(zipPath) - return unzipPath - } - - /** - * js实现文件夹内所有文件读取 - */ - fun getTxtInFolder(unzipPath: String): String { - if (unzipPath.isEmpty()) return "" - val unzipFolder = FileUtils.getFolder(unzipPath) - val contents = StringBuilder() - unzipFolder.listFiles().let { - if (it != null) { - for (f in it) { - val charsetName = FileUtils.getFileCharset(f) - contents.append(String(f.readBytes(), charset(charsetName))) - .append("\n") - } - contents.deleteCharAt(contents.length - 1) - } - } - FileUtils.deleteFile(unzipPath) - return contents.toString() - } - - /** - * js实现重定向拦截,不能删 - */ - @Throws(IOException::class) - operator fun get(urlStr: String?, headers: Map?): Connection.Response? { - return Jsoup.connect(urlStr) - .sslSocketFactory(SSLSocketClient.createSSLSocketFactory()) - .ignoreContentType(true) - .followRedirects(false) - .headers(headers) - .method(Connection.Method.GET) - .execute() - } - - /** - * js实现重定向拦截,不能删 - */ - @Throws(IOException::class) - fun post( - urlStr: String?, - body: String?, - headers: Map? - ): Connection.Response? { - return Jsoup.connect(urlStr) - .sslSocketFactory(SSLSocketClient.createSSLSocketFactory()) - .ignoreContentType(true) - .followRedirects(false) - .requestBody(body) - .headers(headers) - .method(Connection.Method.POST) - .execute() - } - - /** - *js实现读取cookie - */ - fun getCookie(tag: String, key: String? = null): String { - val cookie = CookieStore.getCookie(tag) - val cookieMap = CookieStore.cookieToMap(cookie) - return if (key != null) { - cookieMap[key] ?: "" - } else { - cookie - } - } - - /** - * js实现解码,不能删 - */ - fun base64Decode(str: String): String { - return EncoderUtils.base64Decode(str, Base64.NO_WRAP) - } - - fun base64Decode(str: String, flags: Int): String { - return EncoderUtils.base64Decode(str, flags) - } - - fun base64DecodeToByteArray(str: String?): ByteArray? { - if (str.isNullOrBlank()) { - return null - } - return Base64.decode(str, Base64.DEFAULT) - } - - fun base64DecodeToByteArray(str: String?, flags: Int): ByteArray? { - if (str.isNullOrBlank()) { - return null - } - return Base64.decode(str, flags) - } - - fun base64Encode(str: String): String? { - return EncoderUtils.base64Encode(str, Base64.NO_WRAP) - } - - fun base64Encode(str: String, flags: Int): String? { - return EncoderUtils.base64Encode(str, flags) - } - - fun md5Encode(str: String): String { - return MD5Utils.md5Encode(str) - } - - fun md5Encode16(str: String): String { - return MD5Utils.md5Encode16(str) - } - - /** - * 时间格式化 - */ - fun timeFormat(time: Long): String { - val sdf = SimpleDateFormat("yyyy/MM/dd HH:mm") - return sdf.format(Date(time)) - } - - /** - * utf8编码转gbk编码 - */ - fun utf8ToGbk(str: String): String { - val utf8 = String(str.toByteArray(charset("UTF-8"))) - val unicode = String(utf8.toByteArray(), charset("UTF-8")) - return String(unicode.toByteArray(charset("GBK"))) - } - - fun encodeURI(str: String): String { - return try { - URLEncoder.encode(str, "UTF-8") - } catch (e: Exception) { - "" - } - } - - fun encodeURI(str: String, enc: String): String { - return try { - URLEncoder.encode(str, enc) - } catch (e: Exception) { - "" - } - } - - fun htmlFormat(str: String): String { - return StringUtils.formatHtml(str) - } - - /** - * 读取本地文件 - */ - fun readFile(path: String): ByteArray { - return File(path).readBytes() - } - - fun readTxtFile(path: String): String { - val f = File(path) - val charsetName = FileUtils.getFileCharset(f) - return String(f.readBytes(), charset(charsetName)) - } - - fun readTxtFile(path: String, charsetName: String): String { - return String(File(path).readBytes(), charset(charsetName)) - } - - /** - * 输出调试日志 - */ - fun log(msg: String): String { - Log.d("JS", msg) - return msg - } - - /** - * AES 解码为 ByteArray - * @param str 传入的AES加密的数据 - * @param key AES 解密的key - * @param transformation AES加密的方式 - * @param iv ECB模式的偏移向量 - */ - fun aesDecodeToByteArray( - str: String, - key: String, - transformation: String, - iv: String = "" - ): ByteArray? { - - return EncoderUtils.decryptAES( - data = str.encodeToByteArray(), - key = key.encodeToByteArray(), - transformation, - iv.encodeToByteArray() - ) - } - - /** - * AES 解码为 String - * @param str 传入的AES加密的数据 - * @param key AES 解密的key - * @param transformation AES加密的方式 - * @param iv ECB模式的偏移向量 - */ - - fun aesDecodeToString( - str: String, - key: String, - transformation: String, - iv: String = "" - ): String? { - return aesDecodeToByteArray(str, key, transformation, iv)?.let { String(it) } - } - - /** - * 已经base64的AES 解码为 ByteArray - * @param str 传入的AES Base64加密的数据 - * @param key AES 解密的key - * @param transformation AES加密的方式 - * @param iv ECB模式的偏移向量 - */ - - fun aesBase64DecodeToByteArray( - str: String, - key: String, - transformation: String, - iv: String = "" - ): ByteArray? { - return EncoderUtils.decryptBase64AES( - data = str.encodeToByteArray(), - key = key.encodeToByteArray(), - transformation, - iv.encodeToByteArray() - ) - } - - /** - * 已经base64的AES 解码为 String - * @param str 传入的AES Base64加密的数据 - * @param key AES 解密的key - * @param transformation AES加密的方式 - * @param iv ECB模式的偏移向量 - */ - - fun aesBase64DecodeToString( - str: String, - key: String, - transformation: String, - iv: String = "" - ): String? { - return aesBase64DecodeToByteArray(str, key, transformation, iv)?.let { String(it) } - } - - /** - * 加密aes为ByteArray - * @param data 传入的原始数据 - * @param key AES加密的key - * @param transformation AES加密的方式 - * @param iv ECB模式的偏移向量 - */ - fun aesEncodeToByteArray( - data: String, key: String, transformation: String, - iv: String = "" - ): ByteArray? { - return EncoderUtils.encryptAES( - data.encodeToByteArray(), - key = key.encodeToByteArray(), - transformation, - iv.encodeToByteArray() - ) - } - - /** - * 加密aes为String - * @param data 传入的原始数据 - * @param key AES加密的key - * @param transformation AES加密的方式 - * @param iv ECB模式的偏移向量 - */ - fun aesEncodeToString( - data: String, key: String, transformation: String, - iv: String = "" - ): String? { - return aesEncodeToByteArray(data, key, transformation, iv)?.let { String(it) } - } - - /** - * 加密aes后Base64化的ByteArray - * @param data 传入的原始数据 - * @param key AES加密的key - * @param transformation AES加密的方式 - * @param iv ECB模式的偏移向量 - */ - fun aesEncodeToBase64ByteArray( - data: String, key: String, transformation: String, - iv: String = "" - ): ByteArray? { - return EncoderUtils.encryptAES2Base64( - data.encodeToByteArray(), - key = key.encodeToByteArray(), - transformation, - iv.encodeToByteArray() - ) - } - - /** - * 加密aes后Base64化的String - * @param data 传入的原始数据 - * @param key AES加密的key - * @param transformation AES加密的方式 - * @param iv ECB模式的偏移向量 - */ - fun aesEncodeToBase64String( - data: String, key: String, transformation: String, - iv: String = "" - ): String? { - return aesEncodeToBase64ByteArray(data, key, transformation, iv)?.let { String(it) } - } -} \ No newline at end of file