@NotNull
public static GitLabToken obtainAccessToken(@NotNull String gitlabUrl, @NotNull String username, @NotNull String password, boolean sudoScope) throws IOException {
try {
final OAuthGetAccessToken tokenServerUrl = new OAuthGetAccessToken(gitlabUrl + "/oauth/token" + (sudoScope ? "?scope=api%20sudo" : ""));
final TokenResponse oauthResponse = new PasswordTokenRequest(transport, JacksonFactory.getDefaultInstance(), tokenServerUrl, username, password).execute();
return new GitLabToken(TokenType.ACCESS_TOKEN, oauthResponse.getAccessToken());
} catch (TokenResponseException e) {
if (sudoScope && e.getStatusCode() == HttpURLConnection.HTTP_UNAUTHORIZED) {
final GitlabSession session = GitlabAPI.connect(gitlabUrl, username, password);
return new GitLabToken(TokenType.PRIVATE_TOKEN, session.getPrivateToken());
} else {
throw new GitlabAPIException(e.getMessage(), e.getStatusCode(), e);
}
}
}