package org.hwbot.opengl.tasks;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.UnknownHostException;
import org.hwbot.api.bench.dto.UserStatsDTO;
import org.hwbot.opengl.MainActivity;
import org.hwbot.opengl.TabFragmentAccount;
import org.hwbot.prime.service.BenchService;
import org.hwbot.prime.service.SecurityService;
import android.os.AsyncTask;
import android.util.Log;
import com.google.gson.Gson;
/**
* Represents an asynchronous login/registration task used to authenticate
* the user.
*/
public class UserStatsLoaderTask extends AsyncTask<Void, Void, UserStatsDTO> {
/**
* @param tabFragmentAccount
*/
public UserStatsLoaderTask(TabFragmentAccount tabFragmentAccount) {
}
// @Override
protected UserStatsDTO doInBackground(Void... params) {
BufferedReader reader = null;
try {
if (SecurityService.getInstance().isLoggedIn()) {
// Log.i(this.getClass().getSimpleName(), "Credentials: " + SecurityService.getInstance().getCredentials());
URL url = new URL(BenchService.SERVER + "/api/user/stats?userId=" + SecurityService.getInstance().getCredentials().getUserId()
+ (params.length > 0 && params[0] != null ? "&from=" + params[0] : ""));
// Log.i(this.getClass().getSimpleName(), "Loading user stats from: " + url);
reader = new BufferedReader(new InputStreamReader(url.openStream()));
UserStatsDTO userStatsDTO = new Gson().fromJson(reader, UserStatsDTO.class);
// Log.i(this.getClass().getSimpleName(), "Loaded " + userStatsDTO + " user stats.");
return userStatsDTO;
} else {
Log.w(this.getClass().getSimpleName(), "Not logged in.");
return null;
}
} catch (UnknownHostException e) {
MainActivity.activity.showNetworkPopupOnce();
} catch (Exception e) {
Log.e(this.getClass().getSimpleName(), "Failed to load user stats: " + e.getMessage());
e.printStackTrace();
} finally {
try {
if (reader != null) {
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
// @Override
protected void onPostExecute(UserStatsDTO dto) {
// store
MainActivity.getActivity().storeUserStats(dto);
if (TabFragmentAccount.rootView != null) {
TabFragmentAccount.getInstance().updateUserStats(dto);
}
}
// @Override
protected void onCancelled() {
}
}