Inceptum/common/src/main/java/io/gitlab/jfronny/inceptum/common/api/GitlabApi.java

54 lines
2.4 KiB
Java

package io.gitlab.jfronny.inceptum.common.api;
import io.gitlab.jfronny.commons.HttpUtils;
import io.gitlab.jfronny.gson.compile.util.GList;
import io.gitlab.jfronny.gson.stream.JsonReader;
import io.gitlab.jfronny.inceptum.common.model.gitlab.*;
import java.io.IOException;
import java.io.Reader;
import java.net.URISyntaxException;
import java.util.List;
import java.util.function.Predicate;
public class GitlabApi {
public static final String PROJECTS = "https://gitlab.com/api/v4/projects/";
public static final long PROJECT_ID = 30862253L;
public static final String PROJECT_MAVEN = "https://gitlab.com/api/v4/projects/" + PROJECT_ID + "/packages/maven/";
public static GitlabProject getProject(Long projectId) throws IOException, URISyntaxException {
try (Reader r = HttpUtils.get(PROJECTS + projectId).sendReader()) {
return GC_GitlabProject.read(r);
}
}
public static List<GitlabPackage> getPackages(GitlabProject project) throws IOException, URISyntaxException {
try (JsonReader r = new JsonReader(HttpUtils.get(PROJECTS + project.id + "/packages?order_by=created_at&sort=desc").sendReader())) {
return GList.read(r, GC_GitlabPackage::read);
}
}
public static List<GitlabJob> getJobs(GitlabProject project, Long pipelineId) throws IOException, URISyntaxException {
try (JsonReader r = new JsonReader(HttpUtils.get(PROJECTS + project.id + "/pipelines/" + pipelineId + "/jobs").sendReader())) {
List<GitlabJob> list = GList.read(r, GC_GitlabJob::read);
list.sort((left, right) -> right.created_at.compareTo(left.created_at));
return list;
}
}
public static GitlabPackageFile getFile(GitlabProject project, GitlabPackage packageInfo, Predicate<GitlabPackageFile> isValid) throws IOException, URISyntaxException {
int page = 0;
while (true) {
try (JsonReader r = new JsonReader(HttpUtils.get(PROJECTS + project.id + "/packages/" + packageInfo.id + "/package_files?per_page=100&page=" + ++page).sendReader())) {
List<GitlabPackageFile> files = GList.read(r, GC_GitlabPackageFile::read);
if (files.isEmpty()) return null;
for (GitlabPackageFile file : files) {
if (isValid.test(file))
return file;
}
}
}
}
}