package com.novelbook.android.netapi; import java.util.Map; import io.reactivex.Observable; import okhttp3.ResponseBody; import retrofit2.Call; import retrofit2.http.Body; import retrofit2.http.FieldMap; import retrofit2.http.FormUrlEncoded; import retrofit2.http.GET; import retrofit2.http.POST; import retrofit2.http.Path; import retrofit2.http.Query; import retrofit2.http.QueryMap; import retrofit2.http.Streaming; import retrofit2.http.Url; /** * Created by 眼神 on 2018/3/27. * * 存放所有的Api */ public interface HttpApi { //请填写自己的接口名 // @POST("abc") // Observable<ResponseBody> getDataForBean(@Body DouBanMovieRequest bean); @GET("top250") Observable<ResponseBody> getDataForMap(@QueryMap Map<String, Integer> map); /** * 通过地址下载一个文件 */ @GET("ab") @Streaming Call<ResponseBody> downloadFile(@Url String fileUrl); //http://xiaoshuofenxiang.com/api/g/ @GET("g/") Observable<ResponseBody> getMasterDomain(); //http://xiaoshuofenxiang.com/api/n/f2619820112625133c14dcb170f5e092.json @GET("n/{id}") Observable<ResponseBody> getNovel(@Path("id") int novelId); //http://xiaoshuofenxiang.com/api/n/f2619820112625133c14dcb170f5e092.mulu-urls.json @GET("n/{id}/mulu-urls") Observable<ResponseBody> getNovelSites(@Path("id") int novelId); //http://xiaoshuofenxiang.com/api/s/www.qu.la.json @GET("s/{siteDomain}.json") Observable<ResponseBody> getNovelRule(@Path("siteDomain") String siteDomain); @GET("page/index") Observable<ResponseBody> getFirstPage(@Query("sex") int Sex); //分类的总榜,显示每个小说分类有多少本书http://xiaoshuofenxiang.com/api/page/noveltype @GET("page/noveltype") Observable<ResponseBody> getCates(@Query("sex") int sex); // sex:1,男, 2, 女;progress:1, 连载中、2:已完本,3. 新书 http://xiaoshuofenxiang.com/api/search/nt/言情/2?sex=2&progress=1 //@GET("search/nt/{cate}/{pageno}?sex={sex}&progress={progress} ") // Observable<ResponseBody> search(@Query("cate") String cate, @Query("pageno") int pageno, @Query("sex") int sex, @Query("progress") int progress); @GET("search/nt/{cate}/{pageno}") Observable<ResponseBody> getCateNovels(@Path("cate") String cate, @Path("pageno") int pageno, @Query("sex") int sex, @Query("progress") int progress); //小说排行 http://xiaoshuofenxiang.com/api/page/rank?fn=hot @GET("page/rank") Observable<ResponseBody> getNovelPaihang(@Query("fn") String fn,@Query("pn") int pageNo,@Query("sex") int Sex); //相关小说 http://xiaoshuofenxiang.com/api/n/6/about @GET("n/{novelId}/about") Observable<ResponseBody> getNovelsRelated(@Path("novelId") int novelId); //同作者其它小说http://xiaoshuofenxiang.com/api/n/7/author @GET("n/{novelId}/author") Observable<ResponseBody> getNovelsSameAuthor(@Path("novelId") int novelId); //站点榜单http://xiaoshuofenxiang.com/api/page/siteranks?sex=1 /* @GET("page/siteranks") Observable<ResponseBody> getSiteRanks(@Query("sex") int Sex); //http://xiaoshuofenxiang.com/api/page/siterank?fn=qidian-yuanchuangfengyunbang&pn=3 @GET("page/siterank") Observable<ResponseBody> getSiteRankDetail(@Query("fn")String fn,@Query("pn")int pageNo,@Query("sex") int Sex);*/ @GET( "search/{keyword}/{pageno}") Observable<ResponseBody> getSeachNolvelist(@Path("keyword")String keyWord,@Path("pageno")int pageNo,@Query("sex") int Sex); // 搜索分类 http://xiaoshuofenxiang.com/api/page/topdata @GET("page/topdata") Observable<ResponseBody> getSearchTitles(@Query("sex") int Sex); //返回指定id列表的小说列表api/novels/1,2 @GET("novels/{nvs}") Observable<ResponseBody> getNovelsByIds(@Path("nvs")String nvs ); //返回指定id列表的小说列表 @GET("page/hot-keywords") Observable<ResponseBody> getSearchHotKeys(@Query("sex") int Sex); @GET("download/version.xml") Observable<ResponseBody> getVersion(); @GET("page/category") Observable<ResponseBody> getPaihangBangCateList(@Query("sex") int Sex,@Query("type") String type); @GET("page/siteranks") Observable<ResponseBody> getPaihangBangByCate(@Query("sex") int Sex,@Query("cid") int cid); @GET("page/siterank") Observable<ResponseBody> getPaihangBangList(@Query("sex") int Sex,@Query("cid") int cid,@Query("pn")int pageNo); @FormUrlEncoded @POST("r/{actionType}.shtml") //{action type}.shtml?msg=${msg} Observable<ResponseBody> reportMsg(@Path("actionType")String actionType, @FieldMap Map<String, String> map); }