package com.xda.one.api.retrofit; import com.xda.one.api.inteface.NewsClient; import com.xda.one.api.misc.EventBus; import com.xda.one.api.model.response.container.ResponseNewsContainer; import com.xda.one.api.model.response.container.ResponsePostContainer; import com.xda.one.constants.XDAConstants; import com.xda.one.util.Utils; import android.content.Context; import retrofit.Callback; import retrofit.RetrofitError; import retrofit.http.GET; import retrofit.http.Query; public class RetrofitNewsClient implements NewsClient { private static NewsClient sNewsClient; private final NewsAPI mNewsAPI; private final EventBus mBus; private RetrofitNewsClient(final Context context) { mNewsAPI = RetrofitClient.getRestBuilder(context, XDAConstants.XDA_NEWS_URL) .build() .create(NewsAPI.class); mBus = new EventBus(); } public static NewsClient getClient(final Context context) { if (sNewsClient == null) { sNewsClient = new RetrofitNewsClient(context); } return sNewsClient; } @Override public EventBus getBus() { return mBus; } @Override public ResponseNewsContainer getNews(final int page) { try { final ResponseNewsContainer news = mNewsAPI.getNews(1, page); // This is a hack - TODO - fix it news.setCurrentPage(page); return news; } catch (RetrofitError error) { Utils.handleRetrofitErrorQuietly(error); } return null; } @Override public void getNewsAsync(final int page, final Callback<ResponsePostContainer> callback) { mNewsAPI.getNewsAsync(1, page, callback); } public static interface NewsAPI { @GET("/") public ResponseNewsContainer getNews(@Query("json") final int json, @Query("page") final int page); @GET("/") public void getNewsAsync(@Query("json") final int json, @Query("page") final int page, final Callback<ResponsePostContainer> containerCallback); } }