commit
2edeb25731
@ -0,0 +1,69 @@ |
||||
package io.legado.app.utils |
||||
|
||||
import io.legado.app.constant.AppLog |
||||
import io.legado.app.data.entities.Book |
||||
import io.legado.app.data.entities.BaseSource |
||||
import io.legado.app.data.entities.BookSource |
||||
import io.legado.app.data.entities.RssSource |
||||
import java.io.InputStream |
||||
import java.io.ByteArrayInputStream |
||||
|
||||
/** |
||||
* 加密图片解密工具 |
||||
*/ |
||||
object ImageUtils { |
||||
|
||||
/** |
||||
* @param isCover 根据这个执行书源中不同的解密规则 |
||||
* @return 解密失败返回Null 解密规则为空不处理 |
||||
*/ |
||||
fun decode( |
||||
src: String, bytes: ByteArray, isCover: Boolean, |
||||
source: BaseSource?, book: Book? = null |
||||
): ByteArray? { |
||||
val ruleJs = getRuleJs(source, isCover) |
||||
if (ruleJs.isNullOrBlank()) return bytes |
||||
//解密库hutool.crypto ByteArray|InputStream -> ByteArray |
||||
return kotlin.runCatching { |
||||
source?.evalJS(ruleJs) { |
||||
put("book", book) |
||||
put("result", bytes) |
||||
put("src", src) |
||||
} as ByteArray |
||||
}.onFailure { |
||||
AppLog.putDebug("${src}解密错误", it) |
||||
}.getOrNull() |
||||
} |
||||
|
||||
fun decode( |
||||
src: String, inputStream: InputStream, isCover: Boolean, |
||||
source: BaseSource?, book: Book? = null |
||||
): InputStream? { |
||||
val ruleJs = getRuleJs(source, isCover) |
||||
if (ruleJs.isNullOrBlank()) return inputStream |
||||
//解密库hutool.crypto ByteArray|InputStream -> ByteArray |
||||
return kotlin.runCatching { |
||||
val bytes = source?.evalJS(ruleJs) { |
||||
put("book", book) |
||||
put("result", inputStream) |
||||
put("src", src) |
||||
} as ByteArray |
||||
ByteArrayInputStream(bytes) |
||||
}.onFailure { |
||||
AppLog.putDebug("${src}解密错误", it) |
||||
}.getOrNull() |
||||
} |
||||
|
||||
|
||||
private fun getRuleJs( |
||||
source: BaseSource?, isCover: Boolean |
||||
): String? { |
||||
return when (source) { |
||||
is BookSource -> |
||||
if (isCover) source?.coverDecodeJs else source?.getContentRule()?.imageDecode |
||||
is RssSource -> source?.coverDecodeJs |
||||
else -> null |
||||
} |
||||
} |
||||
|
||||
} |
Loading…
Reference in new issue