Skip to content

Commit

Permalink
Add "expires_at" to the rotate access token methods (#1124)
Browse files Browse the repository at this point in the history
  • Loading branch information
jmini committed May 16, 2024
1 parent 346a02a commit 61e6411
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 3 deletions.
24 changes: 22 additions & 2 deletions src/main/java/org/gitlab4j/api/GroupApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -2121,7 +2121,7 @@ public GroupAccessToken createGroupAccessToken(Object groupIdOrPath, String name
GitLabApiForm formData = new GitLabApiForm()
.withParam("name", name, true)
.withParam("scopes", Arrays.asList(scopes))
.withParam("expires_at", expiresAt)
.withParam("expires_at", ISO8601.dateOnly(expiresAt))
.withParam("access_level", accessLevel);

Response response = post(Response.Status.CREATED, formData, "groups", getGroupIdOrPath(groupIdOrPath), "access_tokens");
Expand All @@ -2139,10 +2139,30 @@ public GroupAccessToken createGroupAccessToken(Object groupIdOrPath, String name
* @throws GitLabApiException if any exception occurs
*/
public GroupAccessToken rotateGroupAccessToken(Object groupIdOrPath, Long tokenId) throws GitLabApiException {
Response response = post(Response.Status.OK, (Form)null, "groups", getGroupIdOrPath(groupIdOrPath), "access_tokens", tokenId, "rotate");
return rotateGroupAccessToken(groupIdOrPath, tokenId, null);
}


/**
* Rotate a group access token. Revokes the previous token and creates a new token that expires in one week.
*
* <pre><code>GitLab Endpoint: POST /groups/:id/access_tokens/:token_id/rotate</code></pre>
*
* @param groupIdOrPath the group in the form of an Long(ID), String(path), or Group instance
* @param tokenId ID of the group access token
* @param expiresAt Expiration date of the access token
* @return the updated GroupAccessToken instance
* @throws GitLabApiException if any exception occurs
*/
public GroupAccessToken rotateGroupAccessToken(Object groupIdOrPath, Long tokenId, Date expiresAt) throws GitLabApiException {
GitLabApiForm formData = new GitLabApiForm()
.withParam("expires_at", ISO8601.dateOnly(expiresAt));

Response response = post(Response.Status.OK, formData, "groups", getGroupIdOrPath(groupIdOrPath), "access_tokens", tokenId, "rotate");
return (response.readEntity(GroupAccessToken.class));
}


/**
* Revoke a group access token.
*
Expand Down
20 changes: 19 additions & 1 deletion src/main/java/org/gitlab4j/api/ProjectApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -4024,7 +4024,25 @@ public ProjectAccessToken createProjectAccessToken(Object projectIdOrPath, Strin
* @throws GitLabApiException if any exception occurs
*/
public ProjectAccessToken rotateProjectAccessToken(Object projectIdOrPath, Long tokenId) throws GitLabApiException {
Response response = post(Response.Status.OK, (Object) null, "projects", getProjectIdOrPath(projectIdOrPath), "access_tokens", tokenId, "rotate");
return rotateProjectAccessToken(projectIdOrPath, tokenId, null);
}

/**
* Rotates the given project access token.
* The token is revoked and a new one which will expire in one week is created to replace it.
* Only working with GitLab 16.0 and above.
*
* @param projectIdOrPath the project in the form of a Long(ID), String(path), or Project instance
* @param tokenId the id
* @param expiresAt Expiration date of the access token
* @return the newly created ProjectAccessToken.
* @throws GitLabApiException if any exception occurs
*/
public ProjectAccessToken rotateProjectAccessToken(Object projectIdOrPath, Long tokenId, Date expiresAt) throws GitLabApiException {
GitLabApiForm formData = new GitLabApiForm()
.withParam("expires_at", ISO8601.dateOnly(expiresAt));

Response response = post(Response.Status.OK, formData, "projects", getProjectIdOrPath(projectIdOrPath), "access_tokens", tokenId, "rotate");
return (response.readEntity(ProjectAccessToken.class));
}

Expand Down

0 comments on commit 61e6411

Please sign in to comment.