package io.codetail.client.mover; import javax.inject.Inject; import io.codetail.client.BaseNetworkJob; import io.codetail.client.State; import io.codetail.work.Params; import retrofit.RetrofitError; import retrofit.client.Response; import retrofit.mime.TypedByteArray; public class FetchSearchPage extends BaseNetworkJob<Mover>{ String mQuery; int mPageNumber; @Inject MoverService mService; public FetchSearchPage(String query, int pageNum){ this(query, pageNum, new Params(PRIORITY_LOW) .groupBy("categoryPages") .requireNetwork() ); } public FetchSearchPage(String category, int pageNum, Params params) { super(params); mPageNumber = pageNum; mQuery = category; } @Override public void onPreRunning() { getEventBus().post(new State.OnStartLoadingPage(mPageNumber)); } @Override public Mover doBackgroundJob() { /** * NOTES * * if category page equals empty quotes("") it's means * that selected page is category_home page :) * */ Response response = mService.search(mQuery, mPageNumber); if(response.getStatus() >= 200 && response.getStatus() <= 300) { byte[] data = ((TypedByteArray) response.getBody()).getBytes(); String htmlSource = new String(data); return new Mover.SearchPage(mQuery, mPageNumber).from(htmlSource); } throw RetrofitError.httpError(response.getUrl(), response, null, Response.class); } @Override public void onJobPostResult(Mover result) { if(!isCancelled()) { result.postEvent(getEventBus()); } } @Override public void onAdded() {} @Override protected boolean shouldReRunOnThrowable(Throwable throwable) { android.util.Log.e("FetchCategoryPage", throwable.toString()); return false; } }