Skip to content

Commit

Permalink
Merge pull request gitlab4j#814 from dren-dk/implement-keys-api
Browse files Browse the repository at this point in the history
Implement keys api
  • Loading branch information
jabby authored Mar 14, 2022
2 parents 116a2f5 + 55a9fb4 commit bdc1f6d
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 0 deletions.
16 changes: 16 additions & 0 deletions src/main/java/org/gitlab4j/api/GitLabApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ public String getApiNamespace() {
private TodosApi todosApi;
private UserApi userApi;
private WikisApi wikisApi;
private KeysApi keysApi;

/**
* Get the GitLab4J shared Logger instance.
Expand Down Expand Up @@ -1683,6 +1684,21 @@ public WikisApi getWikisApi() {
return wikisApi;
}

/**
* Gets the KeysApi instance owned by this GitLabApi instance. The KeysApi is used to look up users by their ssh key signatures
*
* @return the KeysApi instance owned by this GitLabApi instance
*/
public KeysApi getKeysAPI() {
synchronized (this) {
if (keysApi == null) {
keysApi = new KeysApi(this);
}
}
return keysApi;
}


/**
* Create and return an Optional instance associated with a GitLabApiException.
*
Expand Down
30 changes: 30 additions & 0 deletions src/main/java/org/gitlab4j/api/KeysApi.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package org.gitlab4j.api;

import org.gitlab4j.api.models.Key;

import javax.ws.rs.core.MultivaluedHashMap;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response;
import java.util.Collections;

/**
* See:
* https://docs.gitlab.com/ee/api/keys.html#get-user-by-fingerprint-of-ssh-key
*/
public class KeysApi extends AbstractApi {
public KeysApi(GitLabApi gitLabApi) {
super(gitLabApi);
}

/**
* @param fingerprint The md5 hash of a ssh public key with : separating the bytes Or SHA256:$base64hash
* @return The Key which includes the user who owns the key
* @throws GitLabApiException If anything goes wrong
*/
public Key getUserBySSHKeyFingerprint(String fingerprint) throws GitLabApiException {
MultivaluedMap<String, String> queryParams = new MultivaluedHashMap<>();
queryParams.put("fingerprint", Collections.singletonList(fingerprint));
Response response = get(Response.Status.OK, queryParams, "keys");
return response.readEntity(Key.class);
}
}

0 comments on commit bdc1f6d

Please sign in to comment.