package de.hftstuttgart.utils; import de.hftstuttgart.config.ModocotProperties; import io.gitea.ApiClient; import io.gitea.ApiException; import io.gitea.Configuration; import io.gitea.api.RepositoryApi; import io.gitea.api.UserApi; import io.gitea.auth.HttpBasicAuth; import io.gitea.model.CreateRepoOption; import io.gitea.model.Repository; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.stereotype.Component; @Component public class GitTeaUtil { private static final Logger LOG = LogManager.getLogger(GitTeaUtil.class); private final ModocotProperties modocotProperties; public GitTeaUtil(ModocotProperties modocotProperties) { this.modocotProperties = modocotProperties; } /** * Create Git-Repository with name {@code repositoryName} on internal Git-Server * * @param repositoryName name of new Repository * @return newly created Repository */ public Repository createRepository(String repositoryName) { setupAuth(); Repository repo = null; try { repo = new UserApi() .createCurrentUserRepo(new CreateRepoOption().name(repositoryName)); } catch (ApiException e) { LOG.error(String.format("Error while creating repository: %s", repositoryName), e); } if (repo != null) { LOG.info("Created repository {} on {}", repositoryName, repo.getCloneUrl()); } else { throw new IllegalStateException("Repository is null"); } return repo; } /** * Delete Git-Repository with name {@code repositoryName} on internal Git-Server * * @param repositoryName name of new Repository */ public void deleteRepository(String repositoryName) { setupAuth(); try { new RepositoryApi().repoDelete(this.modocotProperties.getGitTeaUsername(), repositoryName); } catch (ApiException e) { LOG.error("Error while deleting repository:" + e.getMessage()); } } private void setupAuth() { ApiClient defaultClient = Configuration.getDefaultApiClient(); defaultClient.setBasePath(this.modocotProperties.getGitTeaBasePath()); HttpBasicAuth basicAuth = (HttpBasicAuth) defaultClient.getAuthentication("BasicAuth"); basicAuth.setUsername(this.modocotProperties.getGitTeaUsername()); basicAuth.setPassword(this.modocotProperties.getGitTeaPassword()); } }