From 749431068ad5505f67f006f54320fba4b3b71b93 Mon Sep 17 00:00:00 2001 From: gedoor Date: Fri, 16 Jul 2021 13:18:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=8E=B7=E5=8F=96=E5=B0=81?= =?UTF-8?q?=E9=9D=A2api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/api/controller/BookController.kt | 20 +++++++++++++++---- .../app/api/controller/SourceController.kt | 2 +- .../java/io/legado/app/help/ImageLoader.kt | 13 ++++++++++++ .../java/io/legado/app/help/JsExtensions.kt | 2 +- .../main/java/io/legado/app/web/HttpServer.kt | 1 + 5 files changed, 32 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/io/legado/app/api/controller/BookController.kt b/app/src/main/java/io/legado/app/api/controller/BookController.kt index daccc43a7..496b24ae2 100644 --- a/app/src/main/java/io/legado/app/api/controller/BookController.kt +++ b/app/src/main/java/io/legado/app/api/controller/BookController.kt @@ -6,9 +6,11 @@ import io.legado.app.constant.PreferKey import io.legado.app.data.appDb import io.legado.app.data.entities.Book import io.legado.app.help.BookHelp +import io.legado.app.help.ImageLoader import io.legado.app.model.localBook.LocalBook import io.legado.app.model.webBook.WebBook import io.legado.app.service.help.ReadBook +import io.legado.app.ui.widget.image.CoverImageView import io.legado.app.utils.GSON import io.legado.app.utils.cnCompare import io.legado.app.utils.fromJsonObject @@ -40,13 +42,23 @@ object BookController { } } + fun getCover(parameters: Map>): ReturnData { + val returnData = ReturnData() + val coverPath = parameters["path"]?.firstOrNull() + val ftBitmap = ImageLoader.loadBitmap(appCtx, coverPath) + .placeholder(CoverImageView.defaultDrawable) + .error(CoverImageView.defaultDrawable) + .submit() + return returnData.setData(ftBitmap.get()) + } + /** * 更新目录 */ fun refreshToc(parameters: Map>): ReturnData { val returnData = ReturnData() try { - val bookUrl = parameters["url"]?.getOrNull(0) + val bookUrl = parameters["url"]?.firstOrNull() if (bookUrl.isNullOrEmpty()) { return returnData.setErrorMsg("参数url不能为空,请指定书籍地址") } @@ -90,7 +102,7 @@ object BookController { * 获取目录 */ fun getChapterList(parameters: Map>): ReturnData { - val bookUrl = parameters["url"]?.getOrNull(0) + val bookUrl = parameters["url"]?.firstOrNull() val returnData = ReturnData() if (bookUrl.isNullOrEmpty()) { return returnData.setErrorMsg("参数url不能为空,请指定书籍地址") @@ -103,8 +115,8 @@ object BookController { * 获取正文 */ fun getBookContent(parameters: Map>): ReturnData { - val bookUrl = parameters["url"]?.getOrNull(0) - val index = parameters["index"]?.getOrNull(0)?.toInt() + val bookUrl = parameters["url"]?.firstOrNull() + val index = parameters["index"]?.firstOrNull()?.toInt() val returnData = ReturnData() if (bookUrl.isNullOrEmpty()) { return returnData.setErrorMsg("参数url不能为空,请指定书籍地址") diff --git a/app/src/main/java/io/legado/app/api/controller/SourceController.kt b/app/src/main/java/io/legado/app/api/controller/SourceController.kt index 3972295e5..f4a92cd6d 100644 --- a/app/src/main/java/io/legado/app/api/controller/SourceController.kt +++ b/app/src/main/java/io/legado/app/api/controller/SourceController.kt @@ -59,7 +59,7 @@ object SourceController { } fun getSource(parameters: Map>): ReturnData { - val url = parameters["url"]?.getOrNull(0) + val url = parameters["url"]?.firstOrNull() val returnData = ReturnData() if (url.isNullOrEmpty()) { return returnData.setErrorMsg("参数url不能为空,请指定书源地址") diff --git a/app/src/main/java/io/legado/app/help/ImageLoader.kt b/app/src/main/java/io/legado/app/help/ImageLoader.kt index cc702ff0f..fa2411d38 100644 --- a/app/src/main/java/io/legado/app/help/ImageLoader.kt +++ b/app/src/main/java/io/legado/app/help/ImageLoader.kt @@ -30,6 +30,19 @@ object ImageLoader { } } + fun loadBitmap(context: Context, path: String?): RequestBuilder { + return when { + path.isNullOrEmpty() -> Glide.with(context).asBitmap().load(path) + path.isAbsUrl() -> Glide.with(context).asBitmap().load(AnalyzeUrl(path).getGlideUrl()) + path.isContentScheme() -> Glide.with(context).asBitmap().load(Uri.parse(path)) + else -> kotlin.runCatching { + Glide.with(context).asBitmap().load(File(path)) + }.getOrElse { + Glide.with(context).asBitmap().load(path) + } + } + } + fun load(context: Context, @DrawableRes resId: Int?): RequestBuilder { return Glide.with(context).load(resId) } diff --git a/app/src/main/java/io/legado/app/help/JsExtensions.kt b/app/src/main/java/io/legado/app/help/JsExtensions.kt index 802b450c6..ab02185b1 100644 --- a/app/src/main/java/io/legado/app/help/JsExtensions.kt +++ b/app/src/main/java/io/legado/app/help/JsExtensions.kt @@ -285,7 +285,7 @@ interface JsExtensions { val zipFile = getFile(zipPath) val unzipFolder = FileUtils.createFolderIfNotExist(unzipPath) ZipUtils.unzipFile(zipFile, unzipFolder) - FileUtils.deleteFile(zipPath) + FileUtils.deleteFile(zipFile.absolutePath) return unzipPath.substring(FileUtils.getCachePath().length) } diff --git a/app/src/main/java/io/legado/app/web/HttpServer.kt b/app/src/main/java/io/legado/app/web/HttpServer.kt index 9b0d09e0e..687383179 100644 --- a/app/src/main/java/io/legado/app/web/HttpServer.kt +++ b/app/src/main/java/io/legado/app/web/HttpServer.kt @@ -51,6 +51,7 @@ class HttpServer(port: Int) : NanoHTTPD(port) { "/getChapterList" -> BookController.getChapterList(parameters) "/refreshToc" -> BookController.refreshToc(parameters) "/getBookContent" -> BookController.getBookContent(parameters) + "/cover" -> BookController.getCover(parameters) else -> null } }