package io.bxbxbai.zhuanlan.core;
import android.content.Context;
import okhttp3.Cache;
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
/**
* @author bxbxbai
*/
public final class ZhuanLanApi {
public static final int DEFAULT_COUNT = 10;
public static final String KEY_POSTS = "/posts";
public static final String KEY_LIMIT = "limit";
public static final String KEY_OFFSET = "offset";
public static final String KEY_RATING = "rating";
public static final String ZHUAN_LAN_URL = "https://zhuanlan.zhihu.com";
public static final String API_BASE = ZHUAN_LAN_URL + "/api/columns/%s";
/**
* slug, post id
*/
public static final String API_POST_DETAIL = ZHUAN_LAN_URL + "/api/columns/%s/posts/%s";
public static final class Url {
private Url() {}
public static final String ZHIHU_DAILY_BEFORE = "http://news.at.zhihu.com/api/3/news/before/";
public static final String ZHIHU_DAILY_OFFLINE_NEWS = "http://news-at.zhihu.com/api/3/news/";
public static final String ZHIHU_DAILY_PURIFY_HEROKU_BEFORE = "http://zhihu-daily-purify.herokuapp.com/raw/";
public static final String ZHIHU_DAILY_PURIFY_SAE_BEFORE = "http://zhihudailypurify.sinaapp.com/raw/";
public static final String SEARCH = "http://zhihudailypurify.sinaapp.com/search/";
}
/**
* 知乎日报启动画面api(手机分辨率的长和宽)
*/
public static final String API_START_IMAGE = "http://news-at.zhihu.com/api/4/start-image/%d*%d";
public static final String API_RATING = API_BASE + KEY_POSTS + "{post_id}" + KEY_RATING;
public static final String API_POST_LIST = API_BASE + KEY_POSTS;
public static final String PIC_SIZE_XL = "xl";
public static final String PIC_SIZE_XS = "xs";
public static final String TEMPLATE_ID = "{id}";
public static final String TEMPLATE_SIZE = "{size}";
private static ZhuanLanApi instance = new ZhuanLanApi();
private Retrofit retrofit;
private ZhuanLanApi() {
retrofit = new Retrofit.Builder()
.baseUrl(ZHUAN_LAN_URL)
.addConverterFactory(GsonConverterFactory.create())
// .client(createHttpClient())
.build();
}
public static <T> T api(Class<T> clazz) {
return instance.retrofit.create(clazz);
}
public static Api getZhuanlanApi() {
return api(Api.class);
}
private static OkHttpClient createHttpClient(Context context) {
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.cache(new Cache(context.getCacheDir(), 10 * 1024*1024));
return builder.build();
}
}