maven依赖
<dependency>
<groupId>org.gitlab</groupId>
<artifactId>java-gitlab-api</artifactId>
<version>4.1.1</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.10.2</version>
</dependency>
封装工具类
package cn.sdu.weblab.util;
import cn.sdu.weblab.entity.User;
import cn.sdu.weblab.entity.pojo.Project;
import org.gitlab.api.GitlabAPI;
import org.gitlab.api.models.CreateUserRequest;
import org.gitlab.api.models.GitlabProject;
import org.gitlab.api.models.GitlabUser;
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.IOException;
import java.util.Map;
public class GitlabUtil {
static String ROOT_TOKEN = null;
static GitlabAPI gitlab = null;
static {
try {
ROOT_TOKEN = createPrivateToken("http", "XXXXXX", "8929", "XXXXX", "XXXXXXXXX", "weblab", "2022-07-07");
} catch (Exception e) {
e.printStackTrace();
}
gitlab = GitlabAPI.connect("http://XXXXXXXX/", ROOT_TOKEN);
}
public static String createPrivateToken(String protocol, String host, String port, String username, String password, String tokenName, String expireDate) throws Exception {
StringBuffer sb = new StringBuffer();
sb.append(protocol);
sb.append("://");
sb.append(host);
sb.append(":");
sb.append(port);
String baseLocation = sb.toString();
String loginHtml = baseLocation + "/users/sign_in";
Connection loginHtmlConn = Jsoup.connect(loginHtml);
Connection.Response loginHtmlRes = loginHtmlConn.execute();
Document loginHtmlResDoc = Jsoup.parseBodyFragment(loginHtmlRes.body());
String auth = loginHtmlResDoc.getElementById("new_user")
.select("input")
.get(0)
.attr("value");
String _gitlab_session = loginHtmlRes.cookie("_gitlab_session");
String loginApi = baseLocation + "/users/sign_in";
Connection loginApiConn = Jsoup.connect(loginApi);
loginApiConn.cookie("_gitlab_session", _gitlab_session);
loginApiConn.data("user[login]", username);
loginApiConn.data("user[password]", password);
loginApiConn.data("user[remember_me]", "0");
loginApiConn.data("authenticity_token", auth);
loginApiConn.method(Connection.Method.POST);
Connection.Response loginApiRes = loginApiConn.execute();
Map<String, String> loginStatusCookie = loginApiRes.cookies();
String accessTokenHtml = baseLocation + "/-/profile/personal_access_tokens";
Connection tokenHtmlConn = Jsoup.connect(accessTokenHtml);
tokenHtmlConn.cookies(loginStatusCookie);
Document accessTokenHtmlDoc = tokenHtmlConn.get();
String authenticity_token = accessTokenHtmlDoc
.getElementById("new_personal_access_token")
.select("input")
.get(0)
.attr("value");
String accessTokenCreateApi = baseLocation + "/-/profile/personal_access_tokens";
Connection accessTokenCreateApiConn = Jsoup.connect(accessTokenCreateApi);
accessTokenCreateApiConn.cookies(loginStatusCookie);
accessTokenCreateApiConn.data("personal_access_token[name]", tokenName);
accessTokenCreateApiConn.data("personal_access_token[expires_at]", expireDate);
accessTokenCreateApiConn.data("personal_access_token[scopes][]", "api");
accessTokenCreateApiConn.data("personal_access_token[scopes][]", "read_api");
accessTokenCreateApiConn.data("personal_access_token[scopes][]", "read_user");
accessTokenCreateApiConn.data("personal_access_token[scopes][]", "read_repository");
accessTokenCreateApiConn.data("personal_access_token[scopes][]", "write_repository");
accessTokenCreateApiConn.data("authenticity_token", authenticity_token);
accessTokenCreateApiConn.method(Connection.Method.POST);
Connection.Response accessTokenCreateApiRes = accessTokenCreateApiConn.execute();
Document accessTokenCreateApiDoc = accessTokenCreateApiRes.parse();
String token = accessTokenCreateApiDoc
.getElementById("created-personal-access-token")
.attr("value");
System.out.println(token);
return token;
}
public static String getRootToken() {
return ROOT_TOKEN;
}
public static GitlabUser createGitlabUser(User user) throws IOException {
CreateUserRequest info = new CreateUserRequest(user.getUsername(), user.getUsername(), user.getEmail());
info.setPassword(user.getPassword());
info.setSkipConfirmation(true);
GitlabUser gitlabUser = gitlab.createUser(info);
return gitlabUser;
}
public static GitlabProject createGitlabProject(Project project) throws IOException {
GitlabProject userProject = gitlab.createUserProject(project.getGitlabUserId(), project.getName(), project.getDescription(), "master", null, null, null, null, null, null, null);
return userProject;
}
public static void deleteGitlabProject(Integer projectId) throws IOException {
gitlab.deleteProject(projectId);
}
}