From 8dca2c885e98a2afae2dd81515fae4d4ce43cf05 Mon Sep 17 00:00:00 2001 From: kunfei Date: Thu, 11 Jul 2019 09:19:43 +0800 Subject: [PATCH] up --- .../io/legado/app/data/api/IHttpGetApi.java | 27 ------------ .../io/legado/app/data/api/IHttpGetApi.kt | 29 +++++++++++++ .../io/legado/app/data/api/IHttpPostApi.java | 32 --------------- .../io/legado/app/data/api/IHttpPostApi.kt | 29 +++++++++++++ .../main/java/io/legado/app/model/WebBook.kt | 41 +++++++++++++++++++ .../app/model/analyzeRule/AnalyzeUrl.kt | 20 +++++---- .../main/java/io/legado/app/model/book/All.kt | 6 --- .../legado/app/model/book/BookChapterList.kt | 5 --- .../io/legado/app/model/book/BookContent.kt | 5 --- .../java/io/legado/app/model/book/BookInfo.kt | 5 --- .../app/model/webbook/BookChapterList.kt | 5 +++ .../legado/app/model/webbook/BookContent.kt | 5 +++ .../io/legado/app/model/webbook/BookInfo.kt | 5 +++ .../app/model/{book => webbook}/BookList.kt | 2 +- .../legado/app/ui/search/SearchViewModel.kt | 2 + 15 files changed, 129 insertions(+), 89 deletions(-) delete mode 100644 app/src/main/java/io/legado/app/data/api/IHttpGetApi.java create mode 100644 app/src/main/java/io/legado/app/data/api/IHttpGetApi.kt delete mode 100644 app/src/main/java/io/legado/app/data/api/IHttpPostApi.java create mode 100644 app/src/main/java/io/legado/app/data/api/IHttpPostApi.kt create mode 100644 app/src/main/java/io/legado/app/model/WebBook.kt delete mode 100644 app/src/main/java/io/legado/app/model/book/All.kt delete mode 100644 app/src/main/java/io/legado/app/model/book/BookChapterList.kt delete mode 100644 app/src/main/java/io/legado/app/model/book/BookContent.kt delete mode 100644 app/src/main/java/io/legado/app/model/book/BookInfo.kt create mode 100644 app/src/main/java/io/legado/app/model/webbook/BookChapterList.kt create mode 100644 app/src/main/java/io/legado/app/model/webbook/BookContent.kt create mode 100644 app/src/main/java/io/legado/app/model/webbook/BookInfo.kt rename app/src/main/java/io/legado/app/model/{book => webbook}/BookList.kt (84%) diff --git a/app/src/main/java/io/legado/app/data/api/IHttpGetApi.java b/app/src/main/java/io/legado/app/data/api/IHttpGetApi.java deleted file mode 100644 index 499c97d17..000000000 --- a/app/src/main/java/io/legado/app/data/api/IHttpGetApi.java +++ /dev/null @@ -1,27 +0,0 @@ -package io.legado.app.data.api; - -import java.util.Map; - -import kotlinx.coroutines.Deferred; -import retrofit2.Response; -import retrofit2.http.GET; -import retrofit2.http.HeaderMap; -import retrofit2.http.QueryMap; -import retrofit2.http.Url; - -/** - * Created by GKF on 2018/1/21. - * get web content - */ - -public interface IHttpGetApi { - @GET - Deferred> get(@Url String url, - @HeaderMap Map headers); - - @GET - Deferred> getMap(@Url String url, - @QueryMap(encoded = true) Map queryMap, - @HeaderMap Map headers); - -} diff --git a/app/src/main/java/io/legado/app/data/api/IHttpGetApi.kt b/app/src/main/java/io/legado/app/data/api/IHttpGetApi.kt new file mode 100644 index 000000000..f1f01b8a3 --- /dev/null +++ b/app/src/main/java/io/legado/app/data/api/IHttpGetApi.kt @@ -0,0 +1,29 @@ +package io.legado.app.data.api + +import kotlinx.coroutines.Deferred +import retrofit2.Response +import retrofit2.http.GET +import retrofit2.http.HeaderMap +import retrofit2.http.QueryMap +import retrofit2.http.Url + +/** + * Created by GKF on 2018/1/21. + * get web content + */ + +interface IHttpGetApi { + @GET + operator fun get( + @Url url: String, + @HeaderMap headers: Map + ): Deferred> + + @GET + fun getMap( + @Url url: String, + @QueryMap(encoded = true) queryMap: Map, + @HeaderMap headers: Map + ): Deferred> + +} diff --git a/app/src/main/java/io/legado/app/data/api/IHttpPostApi.java b/app/src/main/java/io/legado/app/data/api/IHttpPostApi.java deleted file mode 100644 index 1b10207ff..000000000 --- a/app/src/main/java/io/legado/app/data/api/IHttpPostApi.java +++ /dev/null @@ -1,32 +0,0 @@ -package io.legado.app.data.api; - -import java.util.Map; - -import kotlinx.coroutines.Deferred; -import okhttp3.RequestBody; -import retrofit2.Response; -import retrofit2.http.Body; -import retrofit2.http.FieldMap; -import retrofit2.http.FormUrlEncoded; -import retrofit2.http.HeaderMap; -import retrofit2.http.POST; -import retrofit2.http.Url; - -/** - * Created by GKF on 2018/1/29. - * post - */ - -public interface IHttpPostApi { - - @FormUrlEncoded - @POST - Deferred> postMap(@Url String url, - @FieldMap(encoded = true) Map fieldMap, - @HeaderMap Map headers); - - @POST - Deferred> postBody(@Url String url, - @Body RequestBody body, - @HeaderMap Map headers); -} diff --git a/app/src/main/java/io/legado/app/data/api/IHttpPostApi.kt b/app/src/main/java/io/legado/app/data/api/IHttpPostApi.kt new file mode 100644 index 000000000..2cfb5927b --- /dev/null +++ b/app/src/main/java/io/legado/app/data/api/IHttpPostApi.kt @@ -0,0 +1,29 @@ +package io.legado.app.data.api + +import kotlinx.coroutines.Deferred +import okhttp3.RequestBody +import retrofit2.Response +import retrofit2.http.* + +/** + * Created by GKF on 2018/1/29. + * post + */ + +interface IHttpPostApi { + + @FormUrlEncoded + @POST + fun postMap( + @Url url: String, + @FieldMap(encoded = true) fieldMap: Map, + @HeaderMap headers: Map + ): Deferred> + + @POST + fun postBody( + @Url url: String, + @Body body: RequestBody, + @HeaderMap headers: Map + ): Deferred> +} diff --git a/app/src/main/java/io/legado/app/model/WebBook.kt b/app/src/main/java/io/legado/app/model/WebBook.kt new file mode 100644 index 000000000..6af5d455d --- /dev/null +++ b/app/src/main/java/io/legado/app/model/WebBook.kt @@ -0,0 +1,41 @@ +package io.legado.app.model + +import io.legado.app.data.api.IHttpGetApi +import io.legado.app.data.api.IHttpPostApi +import io.legado.app.data.entities.BookSource +import io.legado.app.help.http.HttpHelper +import io.legado.app.model.analyzeRule.AnalyzeUrl +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers.IO +import kotlinx.coroutines.MainScope +import kotlinx.coroutines.launch + +class WebBook(val bookSource: BookSource) : CoroutineScope by MainScope() { + + fun searchBook(key: String, page: Int?, success: (() -> Unit), error: (() -> Unit)) { + launch(IO) { + val searchRule = bookSource.getSearchRule() + searchRule?.searchUrl?.let { searchUrl -> + val analyzeUrl = AnalyzeUrl(searchUrl) + val res = when { + analyzeUrl.method == AnalyzeUrl.Method.POST -> HttpHelper.getApiService( + analyzeUrl.baseUrl + ).postBody( + analyzeUrl.url, + analyzeUrl.body, + analyzeUrl.headerMap + ).await() + analyzeUrl.fieldMap.isEmpty() -> HttpHelper.getApiService( + analyzeUrl.baseUrl + )[analyzeUrl.url, analyzeUrl.headerMap].await() + else -> HttpHelper.getApiService(analyzeUrl.baseUrl) + .getMap(analyzeUrl.url, analyzeUrl.fieldMap, analyzeUrl.headerMap).await() + } + + } + + } + } + + +} \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt index 28067b32a..85a63ae10 100644 --- a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt +++ b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt @@ -27,7 +27,7 @@ class AnalyzeUrl( key: String? = null, page: Int? = null, headerMapF: Map? = null, - var baseUrl: String? = null, + baseUrl: String? = null, book: Book? = null ) { companion object { @@ -35,19 +35,19 @@ class AnalyzeUrl( private val jsonType = MediaType.parse("application/json; charset=utf-8") } - lateinit var url: String + lateinit var baseUrl: String private set - var host: String? = null + lateinit var url: String private set var path: String? = null private set var queryStr: String? = null private set - private val fieldMap = LinkedHashMap() - private val headerMap = HashMap() + val fieldMap = LinkedHashMap() + val headerMap = HashMap() private var charset: String? = null private var bodyTxt: String? = null - var body: RequestBody? = null + lateinit var body: RequestBody private set var method = Method.GET private set @@ -64,7 +64,9 @@ class AnalyzeUrl( } init { - baseUrl = baseUrl?.split(",\n*".toRegex(), 1)?.get(0) + baseUrl?.let { + this.baseUrl = it.split(",\n*".toRegex(), 1)[0] + } headerMapF?.let { headerMap.putAll(it) } //替换参数 replaceKeyPageJs(key, page, book) @@ -124,7 +126,9 @@ class AnalyzeUrl( private fun initUrl() { var urlArray = ruleUrl.split(",[^\\{]*".toRegex(), 2) url = urlArray[0] - host = NetworkUtils.getBaseUrl(url) + NetworkUtils.getBaseUrl(url)?.let { + baseUrl = it + } if (urlArray.size > 1) { val options = GSON.fromJsonObject>(urlArray[1]) options?.let { diff --git a/app/src/main/java/io/legado/app/model/book/All.kt b/app/src/main/java/io/legado/app/model/book/All.kt deleted file mode 100644 index e75b4ac5a..000000000 --- a/app/src/main/java/io/legado/app/model/book/All.kt +++ /dev/null @@ -1,6 +0,0 @@ -package io.legado.app.model.book - -class All { - - -} \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/model/book/BookChapterList.kt b/app/src/main/java/io/legado/app/model/book/BookChapterList.kt deleted file mode 100644 index 38e297239..000000000 --- a/app/src/main/java/io/legado/app/model/book/BookChapterList.kt +++ /dev/null @@ -1,5 +0,0 @@ -package io.legado.app.model.book - -class BookChapterList { - -} \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/model/book/BookContent.kt b/app/src/main/java/io/legado/app/model/book/BookContent.kt deleted file mode 100644 index 8d6341b32..000000000 --- a/app/src/main/java/io/legado/app/model/book/BookContent.kt +++ /dev/null @@ -1,5 +0,0 @@ -package io.legado.app.model.book - -class BookContent { - -} \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/model/book/BookInfo.kt b/app/src/main/java/io/legado/app/model/book/BookInfo.kt deleted file mode 100644 index 6dd7e1e07..000000000 --- a/app/src/main/java/io/legado/app/model/book/BookInfo.kt +++ /dev/null @@ -1,5 +0,0 @@ -package io.legado.app.model.book - -class BookInfo { - -} \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/model/webbook/BookChapterList.kt b/app/src/main/java/io/legado/app/model/webbook/BookChapterList.kt new file mode 100644 index 000000000..9ec26f599 --- /dev/null +++ b/app/src/main/java/io/legado/app/model/webbook/BookChapterList.kt @@ -0,0 +1,5 @@ +package io.legado.app.model.webbook + +class BookChapterList { + +} \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/model/webbook/BookContent.kt b/app/src/main/java/io/legado/app/model/webbook/BookContent.kt new file mode 100644 index 000000000..76473a236 --- /dev/null +++ b/app/src/main/java/io/legado/app/model/webbook/BookContent.kt @@ -0,0 +1,5 @@ +package io.legado.app.model.webbook + +class BookContent { + +} \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/model/webbook/BookInfo.kt b/app/src/main/java/io/legado/app/model/webbook/BookInfo.kt new file mode 100644 index 000000000..f08400e74 --- /dev/null +++ b/app/src/main/java/io/legado/app/model/webbook/BookInfo.kt @@ -0,0 +1,5 @@ +package io.legado.app.model.webbook + +class BookInfo { + +} \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/model/book/BookList.kt b/app/src/main/java/io/legado/app/model/webbook/BookList.kt similarity index 84% rename from app/src/main/java/io/legado/app/model/book/BookList.kt rename to app/src/main/java/io/legado/app/model/webbook/BookList.kt index a4660a4d8..0fc7bae82 100644 --- a/app/src/main/java/io/legado/app/model/book/BookList.kt +++ b/app/src/main/java/io/legado/app/model/webbook/BookList.kt @@ -1,4 +1,4 @@ -package io.legado.app.model.book +package io.legado.app.model.webbook import io.legado.app.data.entities.SearchBook diff --git a/app/src/main/java/io/legado/app/ui/search/SearchViewModel.kt b/app/src/main/java/io/legado/app/ui/search/SearchViewModel.kt index 376a47b76..7c0e2d0bf 100644 --- a/app/src/main/java/io/legado/app/ui/search/SearchViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/search/SearchViewModel.kt @@ -31,6 +31,7 @@ class SearchViewModel(application: Application) : BaseViewModel(application) { .onErrorReturn { "error return" } .onStart { Log.e("TAG!", "start") + start } .onSuccess { Log.e("TAG!", "success: $it") @@ -40,6 +41,7 @@ class SearchViewModel(application: Application) : BaseViewModel(application) { } .onFinally { Log.e("TAG!", "finally") + finally } }