# Conflicts: # app/src/main/java/io/legado/app/ui/search/SearchViewModel.ktpull/32/head
commit
a34d66ca1f
@ -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<Response<String>> get(@Url String url, |
|
||||||
@HeaderMap Map<String, String> headers); |
|
||||||
|
|
||||||
@GET |
|
||||||
Deferred<Response<String>> getMap(@Url String url, |
|
||||||
@QueryMap(encoded = true) Map<String, String> queryMap, |
|
||||||
@HeaderMap Map<String, String> headers); |
|
||||||
|
|
||||||
} |
|
@ -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<String, String> |
||||||
|
): Deferred<Response<String>> |
||||||
|
|
||||||
|
@GET |
||||||
|
fun getMap( |
||||||
|
@Url url: String, |
||||||
|
@QueryMap(encoded = true) queryMap: Map<String, String>, |
||||||
|
@HeaderMap headers: Map<String, String> |
||||||
|
): Deferred<Response<String>> |
||||||
|
|
||||||
|
} |
@ -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<Response<String>> postMap(@Url String url, |
|
||||||
@FieldMap(encoded = true) Map<String, String> fieldMap, |
|
||||||
@HeaderMap Map<String, String> headers); |
|
||||||
|
|
||||||
@POST |
|
||||||
Deferred<Response<String>> postBody(@Url String url, |
|
||||||
@Body RequestBody body, |
|
||||||
@HeaderMap Map<String, String> headers); |
|
||||||
} |
|
@ -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<String, String>, |
||||||
|
@HeaderMap headers: Map<String, String> |
||||||
|
): Deferred<Response<String>> |
||||||
|
|
||||||
|
@POST |
||||||
|
fun postBody( |
||||||
|
@Url url: String, |
||||||
|
@Body body: RequestBody, |
||||||
|
@HeaderMap headers: Map<String, String> |
||||||
|
): Deferred<Response<String>> |
||||||
|
} |
@ -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.data.entities.SearchBook |
||||||
|
import io.legado.app.help.coroutine.Coroutine |
||||||
|
import io.legado.app.help.http.HttpHelper |
||||||
|
import io.legado.app.model.analyzeRule.AnalyzeUrl |
||||||
|
import io.legado.app.model.webbook.BookList |
||||||
|
import kotlinx.coroutines.CoroutineScope |
||||||
|
import kotlinx.coroutines.MainScope |
||||||
|
|
||||||
|
class WebBook(private val bookSource: BookSource) : CoroutineScope by MainScope() { |
||||||
|
|
||||||
|
fun searchBook(key: String, page: Int?): Coroutine<List<SearchBook>> { |
||||||
|
return Coroutine.with(this) { |
||||||
|
bookSource.getSearchRule().searchUrl?.let { searchUrl -> |
||||||
|
val analyzeUrl = AnalyzeUrl(searchUrl) |
||||||
|
val response = when { |
||||||
|
analyzeUrl.method == AnalyzeUrl.Method.POST -> HttpHelper.getApiService<IHttpPostApi>( |
||||||
|
analyzeUrl.baseUrl |
||||||
|
).postBody( |
||||||
|
analyzeUrl.url, |
||||||
|
analyzeUrl.body, |
||||||
|
analyzeUrl.headerMap |
||||||
|
).await() |
||||||
|
analyzeUrl.fieldMap.isEmpty() -> HttpHelper.getApiService<IHttpGetApi>( |
||||||
|
analyzeUrl.baseUrl |
||||||
|
)[analyzeUrl.url, analyzeUrl.headerMap].await() |
||||||
|
else -> HttpHelper.getApiService<IHttpGetApi>(analyzeUrl.baseUrl) |
||||||
|
.getMap(analyzeUrl.url, analyzeUrl.fieldMap, analyzeUrl.headerMap).await() |
||||||
|
} |
||||||
|
return@with BookList().analyzeBookList(response, bookSource, analyzeUrl) |
||||||
|
} |
||||||
|
return@with ArrayList<SearchBook>() |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -1,6 +0,0 @@ |
|||||||
package io.legado.app.model.book |
|
||||||
|
|
||||||
class All { |
|
||||||
|
|
||||||
|
|
||||||
} |
|
@ -1,5 +0,0 @@ |
|||||||
package io.legado.app.model.book |
|
||||||
|
|
||||||
class BookChapterList { |
|
||||||
|
|
||||||
} |
|
@ -1,5 +0,0 @@ |
|||||||
package io.legado.app.model.book |
|
||||||
|
|
||||||
class BookContent { |
|
||||||
|
|
||||||
} |
|
@ -1,5 +0,0 @@ |
|||||||
package io.legado.app.model.book |
|
||||||
|
|
||||||
class BookInfo { |
|
||||||
|
|
||||||
} |
|
@ -1,12 +0,0 @@ |
|||||||
package io.legado.app.model.book |
|
||||||
|
|
||||||
import io.legado.app.data.entities.SearchBook |
|
||||||
|
|
||||||
class BookList { |
|
||||||
|
|
||||||
fun analyzeBookList(): ArrayList<SearchBook> { |
|
||||||
var bookList = ArrayList<SearchBook>() |
|
||||||
|
|
||||||
return bookList |
|
||||||
} |
|
||||||
} |
|
@ -0,0 +1,5 @@ |
|||||||
|
package io.legado.app.model.webbook |
||||||
|
|
||||||
|
class BookChapterList { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,5 @@ |
|||||||
|
package io.legado.app.model.webbook |
||||||
|
|
||||||
|
class BookContent { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,5 @@ |
|||||||
|
package io.legado.app.model.webbook |
||||||
|
|
||||||
|
class BookInfo { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,35 @@ |
|||||||
|
package io.legado.app.model.webbook |
||||||
|
|
||||||
|
import io.legado.app.App |
||||||
|
import io.legado.app.R |
||||||
|
import io.legado.app.data.entities.BookSource |
||||||
|
import io.legado.app.data.entities.SearchBook |
||||||
|
import io.legado.app.model.analyzeRule.AnalyzeRule |
||||||
|
import io.legado.app.model.analyzeRule.AnalyzeUrl |
||||||
|
import io.legado.app.utils.NetworkUtils |
||||||
|
import retrofit2.Response |
||||||
|
|
||||||
|
class BookList { |
||||||
|
|
||||||
|
@Throws(Exception::class) |
||||||
|
fun analyzeBookList( |
||||||
|
response: Response<String>, |
||||||
|
bookSource: BookSource, |
||||||
|
analyzeUrl: AnalyzeUrl, |
||||||
|
isSearch: Boolean = true |
||||||
|
): ArrayList<SearchBook> { |
||||||
|
var bookList = ArrayList<SearchBook>() |
||||||
|
val baseUrl: String = NetworkUtils.getUrl(response) |
||||||
|
val body: String? = response.body() |
||||||
|
body ?: throw Exception( |
||||||
|
App.INSTANCE.getString( |
||||||
|
R.string.get_web_content_error, |
||||||
|
baseUrl |
||||||
|
) |
||||||
|
) |
||||||
|
val analyzer = AnalyzeRule(null) |
||||||
|
analyzer.setContent(body, baseUrl) |
||||||
|
|
||||||
|
return bookList |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue