package com.quinn.githubknife.interactor; import android.content.Context; import com.quinn.githubknife.account.GitHubAccount; import com.quinn.githubknife.listener.OnLoadRepoAndEventPreviewListener; import com.quinn.githubknife.model.GithubService; import com.quinn.githubknife.model.RetrofitUtil; import com.quinn.httpknife.github.Repository; import java.util.List; import retrofit.Call; import retrofit.Callback; import retrofit.Response; import retrofit.Retrofit; /** * Created by Quinn on 10/16/15. */ public class RepoAndEventPreviewInteractorImpl implements RepoAndEventPreviewInteractor { private Context context; private OnLoadRepoAndEventPreviewListener listener; private GithubService service; private GitHubAccount gitHubAccount; public RepoAndEventPreviewInteractorImpl(final Context context, final OnLoadRepoAndEventPreviewListener listener){ this.context = context; this.listener = listener; this.service = RetrofitUtil.getJsonRetrofitInstance(context).create(GithubService.class); this.gitHubAccount = GitHubAccount.getInstance(context); } @Override public void previewRepo(final int page, final String user) { Call<List<Repository>> call = service.userRepo(user, String.valueOf(page)); call.enqueue(new Callback<List<Repository>>() { @Override public void onResponse(Response<List<Repository>> response, Retrofit retrofit) { RetrofitUtil.printResponse(response); if (response.code() == 401) { gitHubAccount.invalidateToken(RetrofitUtil.token); previewRepo(page, user); } else if (response.isSuccess()) { listener.repoItems(response.body()); } else { listener.loadRepoError(); } } @Override public void onFailure(Throwable t) { listener.loadRepoError(); } }); } @Override public void previewEvent(int page, String user) { } }