package com.khmelenko.lab.varis.task; import com.khmelenko.lab.varis.network.request.AuthorizationRequest; import com.khmelenko.lab.varis.task.github.CreateAuthorizationTask; import com.khmelenko.lab.varis.task.github.DeleteAuthorizationTask; import com.khmelenko.lab.varis.task.travis.AuthTask; import com.khmelenko.lab.varis.task.travis.BranchesTask; import com.khmelenko.lab.varis.task.travis.BuildDetailsTask; import com.khmelenko.lab.varis.task.travis.BuildHistoryTask; import com.khmelenko.lab.varis.task.travis.CancelBuildTask; import com.khmelenko.lab.varis.task.travis.FindRepoTask; import com.khmelenko.lab.varis.task.travis.IntentUrlTask; import com.khmelenko.lab.varis.task.travis.LogTask; import com.khmelenko.lab.varis.task.travis.RepoTask; import com.khmelenko.lab.varis.task.travis.RequestsTask; import com.khmelenko.lab.varis.task.travis.RestartBuildTask; import com.khmelenko.lab.varis.task.travis.UserReposTask; import com.khmelenko.lab.varis.task.travis.UserTask; import javax.inject.Inject; /** * Manages the tasks * * @author Dmytro Khmelenko */ public class TaskManager { private final TaskHelper mTaskHelper; @Inject public TaskManager(TaskHelper taskHelper) { mTaskHelper = taskHelper; } /** * Creates new authorization task * * @param basicAuth Basic GitHub authorization * @param request Request data */ public void createNewAuthorization(String basicAuth, AuthorizationRequest request) { CreateAuthorizationTask task = new CreateAuthorizationTask(basicAuth, request); LoaderAsyncTask.executeTask(task, mTaskHelper); } /** * Creates new authorization task * * @param basicAuth Basic GitHub authorization * @param request Request data * @param twoFactorCode Two factor authorization code */ public void createNewAuthorization(String basicAuth, AuthorizationRequest request, String twoFactorCode) { CreateAuthorizationTask task = new CreateAuthorizationTask(basicAuth, request, twoFactorCode); LoaderAsyncTask.executeTask(task, mTaskHelper); } /** * Deletes authorization * * @param basicAuth Basic GitHub authorization * @param authorizationId Authorization ID to delete */ public void deleteAuthorization(String basicAuth, String authorizationId) { DeleteAuthorizationTask task = new DeleteAuthorizationTask(basicAuth, authorizationId); LoaderAsyncTask.executeTask(task, mTaskHelper); } /** * Deletes authorization * * @param basicAuth Basic GitHub authorization * @param authorizationId Authorization ID to delete * @param twoFactorCode Two factor authorization code */ public void deleteAuthorization(String basicAuth, String authorizationId, String twoFactorCode) { DeleteAuthorizationTask task = new DeleteAuthorizationTask(basicAuth, authorizationId, twoFactorCode); LoaderAsyncTask.executeTask(task, mTaskHelper); } /** * Starts authentication task * * @param githubToken Github access token */ public void startAuth(String githubToken) { AuthTask task = new AuthTask(githubToken); LoaderAsyncTask.executeTask(task, mTaskHelper); } /** * Starts searching repository task * * @param searchText Search text */ public void findRepos(String searchText) { FindRepoTask task = new FindRepoTask(searchText); LoaderAsyncTask.executeTask(task, mTaskHelper); } /** * Gets repository details * * @param repoSlug Repository slug */ public void getRepo(String repoSlug) { RepoTask task = new RepoTask(repoSlug); LoaderAsyncTask.executeTask(task, mTaskHelper); } /** * Gets build history * * @param repoSlug Repo slug */ public void getBuildHistory(String repoSlug) { BuildHistoryTask task = new BuildHistoryTask(repoSlug); LoaderAsyncTask.executeTask(task, mTaskHelper); } /** * Gets repository branches * * @param repoSlug Repo slug */ public void getBranches(String repoSlug) { BranchesTask task = new BranchesTask(repoSlug); LoaderAsyncTask.executeTask(task, mTaskHelper); } /** * Gets repository requests * * @param repoSlug Repo slug */ public void getRequests(String repoSlug) { RequestsTask task = new RequestsTask(repoSlug); LoaderAsyncTask.executeTask(task, mTaskHelper); } /** * Gets user information */ public void getUser() { UserTask task = new UserTask(); LoaderAsyncTask.executeTask(task, mTaskHelper); } /** * Loads user related repositories * * @param userName User name */ public void userRepos(String userName) { UserReposTask task = new UserReposTask(userName); LoaderAsyncTask.executeTask(task, mTaskHelper); } /** * Loads build details information * * @param repoSlug Repository slug * @param buildId Build ID */ public void getBuildDetails(String repoSlug, long buildId) { BuildDetailsTask task = new BuildDetailsTask(repoSlug, buildId); LoaderAsyncTask.executeTask(task, mTaskHelper); } /** * Loads an url for the log file * * @param auth Authentication * @param jobId Job ID */ public void getLogUrl(String auth, long jobId) { LogTask task = new LogTask(auth, jobId); LoaderAsyncTask.executeTask(task, mTaskHelper); } /** * Loads an url for the log file * * @param jobId Job ID */ public void getLogUrl(long jobId) { getLogUrl(null, jobId); } /** * Restarts build * * @param buildId Build ID to restart */ public void restartBuild(long buildId) { RestartBuildTask task = new RestartBuildTask(buildId); LoaderAsyncTask.executeTask(task, mTaskHelper); } /** * Cancels build * * @param buildId Build ID to cancel */ public void cancelBuild(long buildId) { CancelBuildTask task = new CancelBuildTask(buildId); LoaderAsyncTask.executeTask(task, mTaskHelper); } /** * Executes the task for intent URL * * @param url Url */ public void intentUrl(String url) { IntentUrlTask task = new IntentUrlTask(url); LoaderAsyncTask.executeTask(task, mTaskHelper); } }