package com.gh4a.loader; import java.io.IOException; import org.eclipse.egit.github.core.RepositoryId; import org.eclipse.egit.github.core.client.RequestException; import org.eclipse.egit.github.core.service.CollaboratorService; import android.content.Context; import com.gh4a.Gh4Application; public class IsCollaboratorLoader extends BaseLoader<Boolean> { private final String mRepoOwner; private final String mRepoName; public IsCollaboratorLoader(Context context, String repoOwner, String repoName) { super(context); mRepoOwner = repoOwner; mRepoName = repoName; } @Override public Boolean doLoadInBackground() throws IOException { Gh4Application app = Gh4Application.get(); String login = app.getAuthLogin(); if (login == null) { return false; } CollaboratorService collabService = (CollaboratorService) app.getService(Gh4Application.COLLAB_SERVICE); try { RepositoryId repoId = new RepositoryId(mRepoOwner, mRepoName); return collabService.isCollaborator(repoId, login); } catch (RequestException e) { if (e.getStatus() == 403) { // the API returns 403 if the user doesn't have push access, // which in turn means he isn't a collaborator return false; } throw e; } } }