package com.adm.dictionary.http;

import com.adm.dictionary.bean.ChineseBean;
import com.adm.dictionary.bean.EnglishBean;
import com.adm.dictionary.bean.SentenceBean;
import com.adm.dictionary.bean.EveryDayWords;

import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
import rx.Observable;

/**
 * Created by Administrator on 2016/10/14.
 */
public class HttpMethods {

    private static HttpMethods instance;

    /**
     * 翻译句子
     */
    private ApiService service1;
    /**
     * 每日一句
     */
    private ApiService service2;
    /**
     * 翻译单词
     */
    private ApiService service3;


    private HttpMethods() {
        HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
        interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
        OkHttpClient client = new OkHttpClient.Builder().addInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)).build();
        Retrofit retrofit1 = new Retrofit.Builder()
                .client(client)
                .baseUrl("http://fanyi.youdao.com")
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        Retrofit retrofit2 = new Retrofit.Builder()
                .client(client)
                .baseUrl("http://open.iciba.com")
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        Retrofit retrofit3 = new Retrofit.Builder()
                .client(client)
                .baseUrl("http://dict-co.iciba.com")
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        service1 = retrofit1.create(ApiService.class);
        service2 = retrofit2.create(ApiService.class);
        service3 = retrofit3.create(ApiService.class);
    }

    public static HttpMethods getInstance() {
        if (instance == null) {
            synchronized (HttpMethods.class) {
                if (instance == null) {
                    instance = new HttpMethods();
                }
            }
        }
        return instance;
    }

    public Observable<SentenceBean> sentenceTransLate(String q) {
        return service1.sentenceTransLate(Constants.KEYFROM, Constants.KEY, "data", "json", "1.1", q);
    }
    public Observable<EveryDayWords> getEveryDayWords(){
        return  service2.getEveryDayWords();
    }

    public Observable<EnglishBean> searchEnglish(String w){
        return service3.englishSearch(w,Constants.CIBAKEY,"json");
    }
    public Observable<ChineseBean> searchChinese(String w){
        return service3.chineseSearch(w,Constants.CIBAKEY,"json");
    }

}