package com.door43.translationstudio.tasks; import com.door43.translationstudio.AppContext; import com.door43.translationstudio.R; import com.door43.translationstudio.SettingsActivity; import com.door43.translationstudio.core.Profile; import com.door43.util.tasks.ManagedTask; import org.unfoldingword.gogsclient.GogsAPI; import org.unfoldingword.gogsclient.Repository; import org.unfoldingword.gogsclient.User; import java.util.ArrayList; import java.util.List; /** * Searches for repositories in gogs */ public class SearchGogsRepositoriesTask extends ManagedTask { public static final String TASK_ID = "search_gogs_repositories"; private final String query; private final int uid; private final User authUser; private final int limit; private List<Repository> repositories = new ArrayList<>(); public SearchGogsRepositoriesTask(User authUser, int uid, String query, int limit) { this.query = query == null ? "" : query; this.uid = uid; this.authUser = authUser; this.limit = limit; } @Override public void start() { if(AppContext.context().isNetworkAvailable()) { GogsAPI api = new GogsAPI(AppContext.getUserString(SettingsActivity.KEY_PREF_GOGS_API, R.string.pref_default_gogs_api)); Profile profile = AppContext.getProfile(); if(profile != null && profile.gogsUser != null) { List<Repository> repos = api.searchRepos(this.query, this.uid, this.limit); // fetch additional information about the repos (clone urls) for(Repository repo:repos) { repo = api.getRepo(repo, this.authUser); if(repo != null) { this.repositories.add(repo); } } } } } public List<Repository> getRepositories() { return this.repositories; } }