All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.factset.sdk.FactSetFunds.auth.OAuth Maven / Gradle / Ivy

There is a newer version: 2.1.1
Show newest version
/*
 * FactSet Funds API
 * FactSet Mutual Funds data offers over 50 fund- and share class-specific data points for mutual funds listed in the United States. 

FactSet Mutual Funds Reference provides fund-specific reference information as well as FactSet's proprietary classification system. It includes but is not limited to the following coverage * Fund descriptions * A seven-tier classification system * Leverage information * Fees and expenses * Portfolio managers FactSet Mutual Funds Time Series provides quantitative data items on a historical basis. It includes but is not limited to the following coverage * Net asset value * Fund flows * Assets under management * Total return

This API is rate-limited to 10 requests per second and 10 concurrent requests per user.

* * The version of the OpenAPI document: 1.1.0 * Contact: [email protected] * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ package com.factset.sdk.FactSetFunds.auth; import com.factset.sdk.FactSetFunds.Pair; import com.factset.sdk.FactSetFunds.ApiException; import com.github.scribejava.core.builder.ServiceBuilder; import com.github.scribejava.core.builder.api.DefaultApi20; import com.github.scribejava.core.exceptions.OAuthException; import com.github.scribejava.core.model.OAuth2AccessToken; import com.github.scribejava.core.oauth.OAuth20Service; import jakarta.ws.rs.core.UriBuilder; import java.io.IOException; import java.net.MalformedURLException; import java.net.URI; import java.util.List; import java.util.Map; import java.util.concurrent.ExecutionException; import java.util.logging.Level; import java.util.logging.Logger; @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") public class OAuth implements Authentication { private static final Logger log = Logger.getLogger(OAuth.class.getName()); private String tokenUrl; private String absoluteTokenUrl; private OAuthFlow flow = OAuthFlow.application; private OAuth20Service service; private DefaultApi20 authApi; private String scope; private String username; private String password; private String code; private volatile OAuth2AccessToken accessToken; public OAuth(String basePath, String tokenUrl) { this.tokenUrl = tokenUrl; this.absoluteTokenUrl = createAbsoluteTokenUrl(basePath, tokenUrl); authApi = new DefaultApi20() { @Override public String getAccessTokenEndpoint() { return absoluteTokenUrl; } @Override protected String getAuthorizationBaseUrl() { throw new UnsupportedOperationException("Shouldn't get there !"); } }; } private static String createAbsoluteTokenUrl(String basePath, String tokenUrl) { if (!URI.create(tokenUrl).isAbsolute()) { try { return UriBuilder.fromPath(basePath).path(tokenUrl).build().toURL().toString(); } catch (MalformedURLException e) { log.log(Level.SEVERE, "Couldn't create absolute token URL", e); } } return tokenUrl; } @Override public void applyToParams( List queryParams, Map headerParams, Map cookieParams, String payload, String method, URI uri) throws ApiException { if (accessToken == null) { obtainAccessToken(null); } if (accessToken != null) { headerParams.put("Authorization", "Bearer " + accessToken.getAccessToken()); } } public OAuth2AccessToken renewAccessToken() throws ApiException { String refreshToken = null; if (accessToken != null) { refreshToken = accessToken.getRefreshToken(); accessToken = null; } return obtainAccessToken(refreshToken); } public synchronized OAuth2AccessToken obtainAccessToken(String refreshToken) throws ApiException { if (service == null) { log.log(Level.FINE, "service is null in obtainAccessToken."); return null; } try { if (refreshToken != null) { return service.refreshAccessToken(refreshToken); } } catch (OAuthException | InterruptedException | ExecutionException | IOException e) { log.log(Level.FINE, "Refreshing the access token using the refresh token failed", e); } try { switch (flow) { case password: if (username != null && password != null) { accessToken = service.getAccessTokenPasswordGrant(username, password, scope); } break; case accessCode: if (code != null) { accessToken = service.getAccessToken(code); code = null; } break; case application: accessToken = service.getAccessTokenClientCredentialsGrant(scope); break; default: log.log(Level.SEVERE, "Invalid flow in obtainAccessToken: " + flow); } } catch (OAuthException | InterruptedException | ExecutionException | IOException e) { throw new ApiException(e); } return accessToken; } public OAuth2AccessToken getAccessToken() { return accessToken; } public OAuth setAccessToken(OAuth2AccessToken accessToken) { this.accessToken = accessToken; return this; } public OAuth setAccessToken(String accessToken) { this.accessToken = new OAuth2AccessToken(accessToken); return this; } public OAuth setScope(String scope) { this.scope = scope; return this; } public OAuth setCredentials(String clientId, String clientSecret, Boolean debug) { if (Boolean.TRUE.equals(debug)) { service = new ServiceBuilder(clientId) .apiSecret(clientSecret).debug() .build(authApi); } else { service = new ServiceBuilder(clientId) .apiSecret(clientSecret) .build(authApi); } return this; } public OAuth usePasswordFlow(String username, String password) { this.flow = OAuthFlow.password; this.username = username; this.password = password; return this; } public OAuth useAuthorizationCodeFlow(String code) { this.flow = OAuthFlow.accessCode; this.code = code; return this; } public OAuth setFlow(OAuthFlow flow) { this.flow = flow; return this; } public void setBasePath(String basePath) { this.absoluteTokenUrl = createAbsoluteTokenUrl(basePath, tokenUrl); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy