|
|
|
@ -18,7 +18,7 @@ import rxhttp.wrapper.param.RxHttp |
|
|
|
|
import rxhttp.wrapper.param.toByteArray |
|
|
|
|
import java.io.File |
|
|
|
|
import java.net.URLEncoder |
|
|
|
|
import java.nio.charset.Charset |
|
|
|
|
import java.text.DateFormat |
|
|
|
|
import java.util.* |
|
|
|
|
|
|
|
|
|
@Keep |
|
|
|
@ -63,8 +63,8 @@ interface JsExtensions { |
|
|
|
|
fun downloadFile(content: String, url: String): String { |
|
|
|
|
val type = AnalyzeUrl(url).type ?: return "" |
|
|
|
|
val zipPath = FileUtils.getPath( |
|
|
|
|
FileUtils.createFolderIfNotExist(FileUtils.getCachePath()), |
|
|
|
|
"${MD5Utils.md5Encode16(url)}.${type}" |
|
|
|
|
FileUtils.createFolderIfNotExist(FileUtils.getCachePath()), |
|
|
|
|
"${MD5Utils.md5Encode16(url)}.${type}" |
|
|
|
|
) |
|
|
|
|
FileUtils.deleteFile(zipPath) |
|
|
|
|
val zipFile = FileUtils.createFileIfNotExist(zipPath) |
|
|
|
@ -82,8 +82,8 @@ interface JsExtensions { |
|
|
|
|
fun unzipFile(zipPath: String): String { |
|
|
|
|
if (zipPath.isEmpty()) return "" |
|
|
|
|
val unzipPath = FileUtils.getPath( |
|
|
|
|
FileUtils.createFolderIfNotExist(FileUtils.getCachePath()), |
|
|
|
|
FileUtils.getNameExcludeExtension(zipPath) |
|
|
|
|
FileUtils.createFolderIfNotExist(FileUtils.getCachePath()), |
|
|
|
|
FileUtils.getNameExcludeExtension(zipPath) |
|
|
|
|
) |
|
|
|
|
FileUtils.deleteFile(unzipPath) |
|
|
|
|
val zipFile = FileUtils.createFileIfNotExist(zipPath) |
|
|
|
@ -104,8 +104,8 @@ interface JsExtensions { |
|
|
|
|
if (it != null) { |
|
|
|
|
for (f in it) { |
|
|
|
|
val charsetName = EncodingDetect.getEncode(f) |
|
|
|
|
contents.append(String(f.readBytes(), Charset.forName(charsetName))) |
|
|
|
|
.append("\n") |
|
|
|
|
contents.append(String(f.readBytes(), charset(charsetName))) |
|
|
|
|
.append("\n") |
|
|
|
|
} |
|
|
|
|
contents.deleteCharAt(contents.length - 1) |
|
|
|
|
} |
|
|
|
@ -114,17 +114,24 @@ interface JsExtensions { |
|
|
|
|
return contents.toString() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* js实现文件夹/文件的删除 |
|
|
|
|
*/ |
|
|
|
|
fun deleteFolder(path: String) { |
|
|
|
|
FileUtils.deleteFile(path) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* js实现重定向拦截,网络访问get |
|
|
|
|
*/ |
|
|
|
|
fun get(urlStr: String, headers: Map<String, String>): Connection.Response { |
|
|
|
|
return Jsoup.connect(urlStr) |
|
|
|
|
.sslSocketFactory(SSLHelper.unsafeSSLSocketFactory) |
|
|
|
|
.ignoreContentType(true) |
|
|
|
|
.followRedirects(false) |
|
|
|
|
.headers(headers) |
|
|
|
|
.method(Connection.Method.GET) |
|
|
|
|
.execute() |
|
|
|
|
.sslSocketFactory(SSLHelper.unsafeSSLSocketFactory) |
|
|
|
|
.ignoreContentType(true) |
|
|
|
|
.followRedirects(false) |
|
|
|
|
.headers(headers) |
|
|
|
|
.method(Connection.Method.GET) |
|
|
|
|
.execute() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -132,13 +139,13 @@ interface JsExtensions { |
|
|
|
|
*/ |
|
|
|
|
fun post(urlStr: String, body: String, headers: Map<String, String>): Connection.Response { |
|
|
|
|
return Jsoup.connect(urlStr) |
|
|
|
|
.sslSocketFactory(SSLHelper.unsafeSSLSocketFactory) |
|
|
|
|
.ignoreContentType(true) |
|
|
|
|
.followRedirects(false) |
|
|
|
|
.requestBody(body) |
|
|
|
|
.headers(headers) |
|
|
|
|
.method(Connection.Method.POST) |
|
|
|
|
.execute() |
|
|
|
|
.sslSocketFactory(SSLHelper.unsafeSSLSocketFactory) |
|
|
|
|
.ignoreContentType(true) |
|
|
|
|
.followRedirects(false) |
|
|
|
|
.requestBody(body) |
|
|
|
|
.headers(headers) |
|
|
|
|
.method(Connection.Method.POST) |
|
|
|
|
.execute() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -202,6 +209,15 @@ interface JsExtensions { |
|
|
|
|
return dateFormat.format(Date(time)) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fun timeFormat(time: String): String { |
|
|
|
|
val date = DateFormat.getDateTimeInstance().parse(time) |
|
|
|
|
return if (date == null) { |
|
|
|
|
"" |
|
|
|
|
} else { |
|
|
|
|
dateFormat.format(date) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* utf8编码转gbk编码 |
|
|
|
|
*/ |
|
|
|
@ -234,10 +250,20 @@ interface JsExtensions { |
|
|
|
|
/** |
|
|
|
|
* 读取本地文件 |
|
|
|
|
*/ |
|
|
|
|
fun readFile(path: String): ByteArray? { |
|
|
|
|
fun readFile(path: String): ByteArray { |
|
|
|
|
return File(path).readBytes() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fun readTxtFile(path: String): String { |
|
|
|
|
val f = File(path) |
|
|
|
|
val charsetName = EncodingDetect.getEncode(f) |
|
|
|
|
return String(f.readBytes(), charset(charsetName)) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fun readTxtFile(path: String, charsetName: String): String { |
|
|
|
|
return String(File(path).readBytes(), charset(charsetName)) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 解析字体,返回字体解析类 |
|
|
|
|
*/ |
|
|
|
@ -275,9 +301,9 @@ interface JsExtensions { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fun replaceFont( |
|
|
|
|
text: String, |
|
|
|
|
font1: QueryTTF?, |
|
|
|
|
font2: QueryTTF? |
|
|
|
|
text: String, |
|
|
|
|
font1: QueryTTF?, |
|
|
|
|
font2: QueryTTF? |
|
|
|
|
): String { |
|
|
|
|
if (font1 == null || font2 == null) return text |
|
|
|
|
val contentArray = text.toCharArray() |
|
|
|
|