package com.chejdj.wanandroid.network.api;

import com.chejdj.wanandroid.network.bean.article.ArticleDataRes;
import com.chejdj.wanandroid.network.bean.homepage.HomeBannerData;
import com.chejdj.wanandroid.network.bean.hotkey.HotKeyData;
import com.chejdj.wanandroid.network.bean.knowledgesystem.PrimaryArticleDirectoryRes;
import com.chejdj.wanandroid.network.bean.login.LoginStateBean;

import io.reactivex.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Path;
import retrofit2.http.Query;

public interface ApiService {
    @POST("user/login")
    @FormUrlEncoded
    Observable<LoginStateBean> userLogin(@Field("username") String username, @Field("password") String password);

    @POST("user/register")
    @FormUrlEncoded
    Observable<LoginStateBean> userRegister(@Field("username") String username, @Field("password") String password, @Field("repassword") String repassword);


    /* 获取首页Banner信息
     */
    @GET("banner/json")
    Observable<HomeBannerData> getHomeBannerData();

    /*
      获取首页Article信息
     */
    @GET("article/list/{pageNum}/json")
    Observable<ArticleDataRes> getHomeArticlesData(@Path("pageNum") int pageNum);

    /*
       获取知识体系的主标题和副标题
     */
    @GET("tree/json")
    Observable<PrimaryArticleDirectoryRes> getKnowledgeTreeData();



   /*
      获取知识体系下详细的文章
      参数介绍:
      pageNum:页码从0开始
      cid : 分类的id,也是当前二级目录的id
    */

    @GET("article/list/{pageNum}/json")
    Observable<ArticleDataRes> getKnowledgeTreeDetailArticleData(@Path("pageNum") int pageNum, @Query("cid") int cid);

    /*
       获取项目分类
     */
    @GET("project/tree/json")
    Observable<PrimaryArticleDirectoryRes> getProjectTreeData();

    /*
      获取某个项目分类的项目
      参数介绍:
      pageNum: 页码从1开始
      cid:项目的分类id

     */
    @GET("project/list/{pageNum}/json")
    Observable<ArticleDataRes> getProectTreeDetailArticleData(@Path("pageNum") int pageNum, @Query("cid") int cid);

    /*
     获取搜索热点
     */
    @GET("hotkey/json")
    Observable<HotKeyData> getSearchHotKey();

    /*
    全局搜索
     */
    @POST("article/query/{pageNum}/json")
    @FormUrlEncoded
    Observable<ArticleDataRes> getSearchResult(@Path("pageNum") int pageNum, @Field("k") String keywords);

    /*
    获取的收藏的文章
     */

    @GET("lg/collect/list/{pageNum}/json")
    Observable<ArticleDataRes> getCollectArticles(@Path("pageNum") int pageNum);

    /*
    取消收藏的文章
     */
    @POST("lg/uncollect/{articleId}/json")
    @FormUrlEncoded
    Observable<ArticleDataRes> cancelCollectedArticle(@Path("articleId") int articleId,@Field("originId")int originId);

    /*
    收藏站内文章
     */
    @POST("lg/collect/{articleId}/json")
    Observable<ArticleDataRes> collectWanAndroidArticle(@Path("articleId") int articleId);

    /*
    获取微信公共号的列表
     */
    @GET("wxarticle/chapters/json")
    Observable<PrimaryArticleDirectoryRes> getWechatArticleChatper();

    /*
    查看微信公众号历史文章
     */
    @GET("wxarticle/list/{cid}/{pageNum}/json")
    Observable<ArticleDataRes> getWechatChapterArticles(@Path("cid") int cid, @Path("pageNum") int pageNum);

    /*
    在某个公共号里面搜索历史文章
     */
    @GET("wxarticle/list/{cid}/{pageNum}/json")
    Observable<ArticleDataRes> searchWechatChapterArticles(@Path("cid") int cid, @Path("pageNum") int pageNum, @Query("k") String keywords);
}