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

org.mule.runtime.oauth.api.builder.OAuthDancerBuilder Maven / Gradle / Ivy

/*
 * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
 * The software in this package is published under the terms of the CPAL v1.0
 * license, a copy of which has been included with this distribution in the
 * LICENSE.txt file.
 */
package org.mule.runtime.oauth.api.builder;

import org.mule.runtime.api.tls.TlsContextFactory;
import org.mule.runtime.http.api.client.HttpClient;

import java.nio.charset.Charset;
import java.util.Map;
import java.util.function.Function;

/**
 * Builder that allows to configure the common attributes for any grant type.
 *
 * @since 4.0
 */
public interface OAuthDancerBuilder {

  /**
   * @param clientId the application identifier as defined in the OAuth authentication server.
   * @param clientSecret the application secret as defined in the OAuth authentication server.
   * 
   * @return this builder
   */
  OAuthDancerBuilder clientCredentials(String clientId, String clientSecret);

  /**
   * Mule, after receiving the authentication code from the OAuth server (through the redirectUrl) will call this url to get the
   * access token.
   * 
   * @param tokenUrl The OAuth authentication server url to get access to the token.
   * 
   * @return this builder
   */
  OAuthDancerBuilder tokenUrl(String tokenUrl);

  /**
   * Mule, after receiving the authentication code from the OAuth server (through the redirectUrl) will call this url to get the
   * access token.
   * 
   * @param httpClient the {@link HttpClient} that will be used to do the HTTP request for the token during the OAuth dance.
   * @param tokenUrl The OAuth authentication server url to get access to the token.
   * 
   * @return this builder
   */
  OAuthDancerBuilder tokenUrl(HttpClient httpClient, String tokenUrl);

  /**
   * Mule, after receiving the authentication code from the OAuth server (through the redirectUrl) will call this url to get the
   * access token.
   * 
   * @param tokenUrl The OAuth authentication server url to get access to the token.
   * @param tlsContextFactory References a TLS config that will be used to do HTTP request during the OAuth dance.
   * 
   * @return this builder
   */
  OAuthDancerBuilder tokenUrl(String tokenUrl, TlsContextFactory tlsContextFactory);

  /**
   * Scopes define permissions over resources.
   * 
   * @param scopes required by this application to execute.
   * 
   * @return this builder
   */
  OAuthDancerBuilder scopes(String scopes);

  /**
   * @param encoding the encoding to use when processing the incoming requests and responses of the OAuth dance.
   * 
   * @return this builder
   */
  OAuthDancerBuilder encoding(Charset encoding);

  /**
   * @param responseAccessTokenExpr an expression to extract the {@code access token} parameter from the response of the call to
   *        {@link #tokenUrl(String) token-url}.
   * 
   * @return this builder
   */
  OAuthDancerBuilder responseAccessTokenExpr(String responseAccessTokenExpr);

  /**
   * @param responseRefreshTokenExpr an expression to extract the {@code refresh token} parameter from the response of the call to
   *        {@link #tokenUrl(String) token-url}.
   * 
   * @return this builder
   */
  OAuthDancerBuilder responseRefreshTokenExpr(String responseRefreshTokenExpr);

  /**
   * @param responseExpiresInExpr an expression to extract the {@code expiresIn} parameter from the response of the call to
   *        {@link #tokenUrl(String) token-url}.
   * 
   * @return this builder
   */
  OAuthDancerBuilder responseExpiresInExpr(String responseExpiresInExpr);


  /**
   * @param customParamsExtractorsExprs a map of {@code paramName} to an expression to extract the custom parameters from the
   *        response of the call to {@link #tokenUrl(String) token-url}.
   * 
   * @return this builder
   */
  OAuthDancerBuilder customParametersExtractorsExprs(Map customParamsExtractorsExprs);

  /**
   * Allows to partition a {@code tokensStore} and reuse it among different dancers, as long as each dancer has its own proper
   * {@code resourceOwnerIdStoreTransformer} and ensures there can be no collissions between the transformed
   * {@code respurceOwnerIds} for different dancers.
   * 

* Providing this transformer only affects how the dancer puts the contexts associated to a {@code reosurceOwner} in the * {@code tokensStore} and the name of the locks generated from the {@code lockProvider} The un-transformed value still has to * be used when calling dancer methods that receive the {@code resourceOwnerId} as a parameter, and will be used when sending * data out as part of the OAuth dance or the token refresh. * * @param resourceOwnerIdTransformer a transformer to apply to the {@code resourceOwnerId} before using it to access the * provided {@code tokensStore}. * @return this builder */ OAuthDancerBuilder resourceOwnerIdTransformer(Function resourceOwnerIdTransformer); /** * Uses the configuration provided to this builder to create a new dancer. * * @return a fresh instance of a dancer. */ D build(); }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy