package CIAPI.Java.pricewidget.model.auth;
import static CIAPI.Java.android.Constants.TAG;
import CIAPI.Java.core.ServiceMethods;
import CIAPI.Java.core.dto.ApiLogOffResponseDTO;
import CIAPI.Java.core.dto.ApiLogOnRequestDTO;
import CIAPI.Java.core.dto.ApiLogOnResponseDTO;
import CIAPI.Java.core.impl.ServiceMethodsImpl;
import CIAPI.Java.pricewidget.activities.TradingApp;
import JsonClient.Java.ApiException;
import JsonClient.Java.DefaultJsonClient;
import JsonClient.Java.JsonApi;
import JsonClient.Java.async.AsyncJsonApi;
import JsonClient.Java.async.CallBack;
import android.content.Context;
import android.content.SharedPreferences;
import android.util.Log;
public class LogOnStatus {
private static final String USERNAME_KEY = "username_@@";
private static final String PASSWORD_KEY = "password_@@";
private static final String SESSION__KEY = "session__@@";
private static final ServiceMethods methods = new ServiceMethodsImpl();
public static void logOn(final String username, final String password) throws ApiException {
Log.w(TAG, "Logging in: " + username);
ApiLogOnRequestDTO reqData = new ApiLogOnRequestDTO();
reqData.setPassword(password);
reqData.setUserName(username);
methods.LogOnAsync(reqData, apiAsync(), new CallBack() {
@Override
public void doCallBack(Object result, String baseUrl, String methodName) {
Log.d(TAG, "Logged on async!!!");
ApiLogOnResponseDTO resp = (ApiLogOnResponseDTO) result;
saveString(SESSION__KEY, resp.getSession());
saveString(USERNAME_KEY, username);
saveString(PASSWORD_KEY, password);
saveString(SESSION__KEY, resp.getSession());
api.addConstantParameter("session", session());
api.addConstantParameter("username", username());
}
});
}
public static void refreshLogOn() throws ApiException {
Log.w(TAG, "Refreshing in: " + username());
ApiLogOnRequestDTO reqData = new ApiLogOnRequestDTO();
reqData.setPassword(password());
reqData.setUserName(username());
methods.LogOnAsync(reqData, apiAsync(), new CallBack() {
@Override
public void doCallBack(Object result, String baseUrl, String methodName) {
Log.d(TAG, "Logged on async!!!");
saveString(SESSION__KEY, ((ApiLogOnResponseDTO) result).getSession());
api.addConstantParameter("session", session());
}
});
}
public static void logOut() throws ApiException {
Log.w(TAG, "Logging out!!: " + username());
ApiLogOffResponseDTO resp = methods.DeleteSession(username(), session(), api());
if (!resp.getLoggedOut()) {
throw new ApiException("Failed to log off....cuz!");
} else {
eraseAll();
}
}
public static String username() {
return getString(USERNAME_KEY);
}
public static void eraseUsername() {
eraseString(USERNAME_KEY);
}
public static String session() {
return getString(SESSION__KEY);
}
public static void eraseSession() {
eraseString(SESSION__KEY);
}
private static String password() {
return getString(PASSWORD_KEY);
}
public static void erasePassword() {
eraseString(PASSWORD_KEY);
}
public static void eraseAll() {
erasePassword();
eraseSession();
eraseUsername();
}
private static JsonApi api = new JsonApi("http://ciapipreprod.cityindextest9.co.uk/TradingApi",
new DefaultJsonClient());
private static AsyncJsonApi apiAsync = new AsyncJsonApi("http://ciapipreprod.cityindextest9.co.uk/TradingApi",
new DefaultJsonClient());
public static JsonApi api() {
return api;
}
public static AsyncJsonApi apiAsync() {
return apiAsync;
}
public static boolean isLoggedOn() {
if (username() == null || username().equals("")) {
return false;
} else if (password() == null || password().equals("")) {
return false;
} else if (session() == null || session().equals("")) {
return false;
} else {
return true;
}
}
// ///
// //Generic stuff follows
// /
private static SharedPreferences shrdPref() {
SharedPreferences prefs = TradingApp.ctxt().getSharedPreferences(TAG, Context.MODE_PRIVATE);
Log.d(TAG, "Getting prefs: " + prefs.toString());
return prefs;
}
private static SharedPreferences.Editor editor() {
return shrdPref().edit();
}
private static void saveString(String key, String string) {
editor().putString(key, string).commit();
}
private static void eraseString(String key) {
editor().putString(key, null);
}
private static String getString(String key) {
return shrdPref().getString(key, null);
}
}