/*
* Copyright 2012 Evernote Corporation
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package com.evernote.client.android;
import android.content.SharedPreferences;
import android.util.Log;
import com.evernote.edam.type.User;
/**
* A container class for the results of a successful OAuth authorization with
* the Evernote service.
*
* @author @tylersmithnet
*/
public class AuthenticationResult {
private static final String LOGTAG = "AuthenticatonResult";
private String mAuthToken;
private String mNoteStoreUrl;
private String mWebApiUrlPrefix;
private String mEvernoteHost;
private int mUserId;
private String mBusinessNoteStoreUrl;
private String mBusinessAuthToken;
private long mBusinessAuthTokenExpiration;
private User mBusinessUser;
public AuthenticationResult(SharedPreferences pref) {
restore(pref);
}
/**
* Create a new AuthenticationResult.
*
* @param authToken An Evernote authentication token.
* @param noteStoreUrl The URL of the Evernote NoteStore for the authenticated user.
* @param webApiUrlPrefix The URL of misc. Evernote web APIs for the authenticated user.
* @param evernoteHost the Evernote Web URL provided from the bootstrap process
* @param userId The numeric ID of the Evernote user.
*
*/
public AuthenticationResult(String authToken, String noteStoreUrl, String webApiUrlPrefix, String evernoteHost, int userId) {
this.mAuthToken = authToken;
this.mNoteStoreUrl = noteStoreUrl;
this.mWebApiUrlPrefix = webApiUrlPrefix;
this.mEvernoteHost = evernoteHost;
this.mUserId = userId;
}
void persist(SharedPreferences pref) {
Log.d(LOGTAG, "persisting Authentication results to SharedPreference");
SharedPreferences.Editor editor = pref.edit();
editor.putString(SessionPreferences.KEY_AUTHTOKEN, mAuthToken);
editor.putString(SessionPreferences.KEY_NOTESTOREURL, mNoteStoreUrl);
editor.putString(SessionPreferences.KEY_WEBAPIURLPREFIX, mWebApiUrlPrefix);
editor.putString(SessionPreferences.KEY_EVERNOTEHOST, mEvernoteHost);
editor.putInt(SessionPreferences.KEY_USERID, mUserId);
SessionPreferences.save(editor);
}
void restore(SharedPreferences pref) {
Log.d(LOGTAG, "restoring Authentication results from SharedPreference");
mAuthToken = pref.getString(SessionPreferences.KEY_AUTHTOKEN, null);
mNoteStoreUrl = pref.getString(SessionPreferences.KEY_NOTESTOREURL, null);
mWebApiUrlPrefix = pref.getString(SessionPreferences.KEY_WEBAPIURLPREFIX, null);
mEvernoteHost = pref.getString(SessionPreferences.KEY_EVERNOTEHOST, null);
mUserId = pref.getInt(SessionPreferences.KEY_USERID, -1);
}
void clear(SharedPreferences pref) {
Log.d(LOGTAG, "clearing Authentication results from SharedPreference");
SharedPreferences.Editor editor = pref.edit();
editor.remove(SessionPreferences.KEY_AUTHTOKEN);
editor.remove(SessionPreferences.KEY_NOTESTOREURL);
editor.remove(SessionPreferences.KEY_WEBAPIURLPREFIX);
editor.remove(SessionPreferences.KEY_EVERNOTEHOST);
editor.remove(SessionPreferences.KEY_USERID);
SessionPreferences.save(editor);
}
/**
* @return the authentication token that will be used to make authenticated API requests.
*/
public String getAuthToken() {
return mAuthToken;
}
/**
* @return the URL that will be used to access the NoteStore service.
*/
public String getNoteStoreUrl() {
return mNoteStoreUrl;
}
/**
* @return the URL prefix that can be used to access non-Thrift API endpoints.
*/
public String getWebApiUrlPrefix() {
return mWebApiUrlPrefix;
}
/**
*
* @return the Evernote Web URL provided from the bootstrap process
*/
public String getEvernoteHost() {
return mEvernoteHost;
}
/**
* @return the numeric user ID of the user who authorized access to their Evernote account.
*/
public int getUserId() {
return mUserId;
}
/**
* @return the URL that will be used to access the BusinessNoteStore service.
*/
public String getBusinessNoteStoreUrl() {
return mBusinessNoteStoreUrl;
}
/**
* Set the BusinessNoteStore Url
*/
void setBusinessNoteStoreUrl(String businessNoteStoreUrl) {
this.mBusinessNoteStoreUrl = businessNoteStoreUrl;
}
/**
* @return the {@link User} that references the business account user object
*/
public User getBusinessUser() {
return mBusinessUser;
}
/**
* Set the BusinessNoteStore Url
*/
void setBusinessUser(User user) {
this.mBusinessUser = user;
}
/**
* @return the Business Auth token
*/
public String getBusinessAuthToken() {
return mBusinessAuthToken;
}
/**
* Set the BusinessNoteStore Authorizaton token's expiration time (epoch)
*/
void setBusinessAuthToken(String authToken) {
this.mBusinessAuthToken = authToken;
}
/**
* @return the BusinessNoteStore Authorizaton token's expiration time (epoch)
*/
public long getBusinessAuthTokenExpiration() {
return mBusinessAuthTokenExpiration;
}
/**
* Set the BusinessNoteStore Authorizaton token's expiration time (epoch)
*/
void setBusinessAuthTokenExpiration(long businessAuthTokenExpiration) {
this.mBusinessAuthTokenExpiration = businessAuthTokenExpiration;
}
}