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; } }