package it.lisik.usosapi; import com.google.api.client.auth.oauth.OAuthHmacSigner; import com.google.api.client.auth.oauth.OAuthParameters; import com.google.inject.Guice; import com.google.inject.Injector; import it.lisik.usosapi.credentials.ApplicationCredentials; import it.lisik.usosapi.credentials.UserCredentials; import it.lisik.usosapi.injectors.OAuthModule; import it.lisik.usosapi.api.users.UserInformation; public class UsosClient { private final UserCredentials userCredentials; private final ApplicationCredentials applicationCredentials; private final OAuthParameters oAuthParameters; private final Injector injector; public UsosClient(UserCredentials userCredentials, ApplicationCredentials applicationCredentials) { this.userCredentials = userCredentials; this.applicationCredentials = applicationCredentials; this.oAuthParameters = prepareOAuthParameters(); this.injector = Guice.createInjector( new OAuthModule( applicationCredentials.getApplicationUrl(), oAuthParameters ) ); } private OAuthParameters prepareOAuthParameters() { OAuthHmacSigner signer = new OAuthHmacSigner(); OAuthParameters parameters = new OAuthParameters(); signer.tokenSharedSecret = userCredentials.getSecret(); signer.clientSharedSecret = applicationCredentials.getSecret(); parameters.signer = signer; parameters.consumerKey = applicationCredentials.getConsumerKey(); parameters.token = userCredentials.getToken(); return parameters; } public UserInformation getUserInformation() { return injector.getInstance(UserInformation.class); } }