package com.apigee.oauth2.grantTypeActivities;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.apigee.google.api.client.auth.oauth2.TokenResponse;
import com.apigee.oauth2.Client;
import com.apigee.oauth2.Constants;
import com.apigee.oauth2.R;
import com.apigee.oauth2.asyncTasks.ApigeeEmailAddressDownloadTask;
import com.apigee.sdk.data.client.ApigeeDataClient;
import com.apigee.sdk.data.client.callbacks.OAuth2ResponseCallback;
public class PasswordGrantTypeActivity extends Activity {
private TextView accessTokenTextView;
private TextView emailAddressTextView;
private TokenResponse tokenResponse;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_password_grant_type);
this.accessTokenTextView = (TextView) this.findViewById(R.id.pAccessTokenTextView);
this.emailAddressTextView = (TextView) this.findViewById(R.id.pEmailTextView);
((Button)this.findViewById(R.id.pClearDataButton)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PasswordGrantTypeActivity.this.clearData();
}
});
((Button)this.findViewById(R.id.pGetAccessTokenButton)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PasswordGrantTypeActivity.this.getAccessToken();
}
});
((Button)this.findViewById(R.id.pGetEmailAddressButton)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PasswordGrantTypeActivity.this.getEmailAddress();
}
});
((Button)this.findViewById(R.id.pStoreTokenButton)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PasswordGrantTypeActivity.this.storeToken();
}
});
((Button)this.findViewById(R.id.pRetrieveTokenButton)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PasswordGrantTypeActivity.this.retrieveStoredToken();
}
});
((Button)this.findViewById(R.id.pDeleteStoreButton)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PasswordGrantTypeActivity.this.deleteStoredToken();
}
});
}
public void clearData() {
this.tokenResponse = null;
this.accessTokenTextView.setText(getString(R.string.not_available));
this.emailAddressTextView.setText(getString(R.string.not_available));
}
public void storeToken() {
if( this.tokenResponse != null ) {
Client.sharedClient().storeOAuth2TokenResponse(Constants.kPasswordTokenStorageId,this.tokenResponse);
}
}
public void retrieveStoredToken() {
this.clearData();
this.tokenResponse = Client.sharedClient().getStoredOAuth2Credentials(Constants.kPasswordTokenStorageId);
if( tokenResponse != null ) {
this.accessTokenTextView.setText(this.tokenResponse.getAccessToken());
}
}
public void deleteStoredToken() {
Client.sharedClient().deleteStoredOAuth2Credentials(Constants.kPasswordTokenStorageId);
}
public void getAccessToken() {
this.clearData();
String tokenURL = String.format(Constants.kApigeePasswordGrantTokenURLFormat,Constants.ORG_ID,Constants.APP_ID);
final ApigeeDataClient dataClient = Client.sharedClient().dataClient();
dataClient.oauth2AccessTokenAsync(tokenURL, Constants.kApigeePasswordGrantUsername, Constants.kApigeePasswordGrantPassword, Constants.kApigeeClientCredentialsClientID, new OAuth2ResponseCallback() {
@Override
public void onResponse(TokenResponse response) {
if (response != null && response.getAccessToken() != null) {
PasswordGrantTypeActivity.this.tokenResponse = response;
PasswordGrantTypeActivity.this.accessTokenTextView.setText(response.getAccessToken());
}
}
@Override
public void onException(Exception e) {
}
});
}
public void getEmailAddress() {
String accessTokenString = this.accessTokenTextView.getText().toString();
if( !accessTokenString.equalsIgnoreCase(getString(R.string.not_available)) ) {
String emailAddressURL = String.format(Constants.kApigeePasswordGrantUserInfoURLFormat,Constants.ORG_ID,Constants.APP_ID,Constants.kApigeePasswordGrantUsername);
new ApigeeEmailAddressDownloadTask(this,this.emailAddressTextView,emailAddressURL,accessTokenString).execute();
} else {
Client.showAlert(this, "Error getting email address.", "Access token is not valid.");
}
}
}