# 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