package org.pac4j.oauth.client;
import org.pac4j.core.client.IndirectClient;
import org.pac4j.core.context.WebContext;
import org.pac4j.core.util.CommonHelper;
import org.pac4j.oauth.config.OAuth20Configuration;
import org.pac4j.oauth.credentials.OAuth20Credentials;
import org.pac4j.oauth.credentials.authenticator.OAuth20Authenticator;
import org.pac4j.oauth.credentials.extractor.OAuth20CredentialsExtractor;
import org.pac4j.oauth.profile.OAuth20Profile;
import org.pac4j.oauth.profile.creator.OAuth20ProfileCreator;
import org.pac4j.oauth.redirect.OAuth20RedirectActionBuilder;
/**
* The generic OAuth 2.0 client.
*
* @author Jerome Leleu
* @since 2.0.0
*/
public class OAuth20Client<U extends OAuth20Profile> extends IndirectClient<OAuth20Credentials, U> {
protected OAuth20Configuration configuration = new OAuth20Configuration();
@Override
protected void clientInit(final WebContext context) {
defaultRedirectActionBuilder(new OAuth20RedirectActionBuilder(configuration));
defaultCredentialsExtractor(new OAuth20CredentialsExtractor(configuration));
defaultAuthenticator(new OAuth20Authenticator(configuration));
defaultProfileCreator(new OAuth20ProfileCreator<>(configuration));
}
public OAuth20Configuration getConfiguration() {
return configuration;
}
public void setConfiguration(final OAuth20Configuration configuration) {
CommonHelper.assertNotNull("configuration", configuration);
this.configuration = configuration;
this.configuration.setClient(this);
}
public String getKey() {
return configuration.getKey();
}
public void setKey(final String key) {
configuration.setKey(key);
}
public String getSecret() {
return configuration.getSecret();
}
public void setSecret(final String secret) {
configuration.setSecret(secret);
}
@Override
public String toString() {
return CommonHelper.toString(this.getClass(), "name", getName(), "callbackUrl", getCallbackUrl(),
"callbackUrlResolver", getCallbackUrlResolver(), "ajaxRequestResolver", getAjaxRequestResolver(),
"redirectActionBuilder", getRedirectActionBuilder(), "credentialsExtractor", getCredentialsExtractor(),
"authenticator", getAuthenticator(), "profileCreator", getProfileCreator(), "configuration", this.configuration);
}
}