|
10 | 10 | import java.security.cert.X509Certificate; |
11 | 11 | import java.util.List; |
12 | 12 | import java.util.Map; |
| 13 | +import java.util.function.Supplier; |
13 | 14 | import java.util.logging.Level; |
14 | 15 | import java.util.logging.Logger; |
15 | 16 |
|
@@ -60,7 +61,7 @@ public class GitLabApiClient implements AutoCloseable { |
60 | 61 | private String baseUrl; |
61 | 62 | private String hostUrl; |
62 | 63 | private TokenType tokenType = TokenType.PRIVATE; |
63 | | - private String authToken; |
| 64 | + private Supplier<String> authToken; |
64 | 65 | private String secretToken; |
65 | 66 | private boolean ignoreCertificateErrors; |
66 | 67 | private SSLContext openSslContext; |
@@ -215,7 +216,7 @@ public GitLabApiClient(ApiVersion apiVersion, String hostUrl, TokenType tokenTyp |
215 | 216 | this.hostUrl += apiVersion.getApiNamespace(); |
216 | 217 |
|
217 | 218 | this.tokenType = tokenType; |
218 | | - this.authToken = authToken; |
| 219 | + this.authToken = () -> authToken; |
219 | 220 |
|
220 | 221 | if (secretToken != null) { |
221 | 222 | secretToken = secretToken.trim(); |
@@ -293,7 +294,7 @@ void setRequestTimeout(Integer connectTimeout, Integer readTimeout) { |
293 | 294 | * @return the auth token being used by this client |
294 | 295 | */ |
295 | 296 | String getAuthToken() { |
296 | | - return (authToken); |
| 297 | + return (authToken.get()); |
297 | 298 | } |
298 | 299 |
|
299 | 300 | /** |
@@ -792,7 +793,7 @@ protected Invocation.Builder invocation(URL url, MultivaluedMap<String, String> |
792 | 793 | } |
793 | 794 |
|
794 | 795 | String authHeader = (tokenType == TokenType.OAUTH2_ACCESS ? AUTHORIZATION_HEADER : PRIVATE_TOKEN_HEADER); |
795 | | - String authValue = (tokenType == TokenType.OAUTH2_ACCESS ? "Bearer " + authToken : authToken); |
| 796 | + String authValue = (tokenType == TokenType.OAUTH2_ACCESS ? "Bearer " + authToken.get() : authToken.get()); |
796 | 797 | Invocation.Builder builder = target.request(); |
797 | 798 | if (accept == null || accept.trim().length() == 0) { |
798 | 799 | builder = builder.header(authHeader, authValue); |
@@ -923,4 +924,12 @@ public boolean verify(String hostname, SSLSession session) { |
923 | 924 |
|
924 | 925 | return (true); |
925 | 926 | } |
| 927 | + |
| 928 | + /** |
| 929 | + * Set auth token supplier for gitlab api client. |
| 930 | + * @param authTokenSupplier - supplier which provide actual auth token |
| 931 | + */ |
| 932 | + public void setAuthTokenSupplier(Supplier<String> authTokenSupplier) { |
| 933 | + this.authToken = authTokenSupplier; |
| 934 | + } |
926 | 935 | } |
0 commit comments