package org.oauth2.client4j.builder;
import org.oauth2.client4j.builder.provider.Provider;
import org.oauth2.client4j.http.DefaultHttpClient;
import org.oauth2.client4j.http.client.HttpClient;
import org.oauth2.client4j.model.OAuthConfig;
import org.oauth2.client4j.service.OAuthService;
public class OAuthServiceBuilder {
private String apiKey;
private String apiSecret;
private String callback;
private Provider provider;
private String scope;
private HttpClient client;
public OAuthServiceBuilder()
{
this.client = new DefaultHttpClient();
}
public OAuthServiceBuilder provider(Class<? extends Provider> providerClass) {
this.provider = createProvider(providerClass);
return this;
}
public OAuthServiceBuilder provider(Provider provider)
{
this.provider = provider;
return this;
}
private Provider createProvider(Class<? extends Provider> providerClass) {
Provider provider;
try {
provider = providerClass.newInstance();
} catch (Exception e) {
throw new RuntimeException("Error while creating the provider object", e);
}
return provider;
}
public OAuthServiceBuilder callback(String callback) {
this.callback = callback;
return this;
}
public OAuthServiceBuilder apiKey(String apiKey) {
this.apiKey = apiKey;
return this;
}
public OAuthServiceBuilder apiSecret(String apiSecret) {
this.apiSecret = apiSecret;
return this;
}
public OAuthServiceBuilder scope(String scope) {
this.scope = scope;
return this;
}
public OAuthServiceBuilder customHttpClient(HttpClient client)
{
this.client = client;
return this;
}
public OAuthService build() {
OAuthService oauthService = provider.createService(new OAuthConfig(apiKey, apiSecret,
callback, scope));
oauthService.cutomeHttpClient(client);
return oauthService;
}
}