package org.hwbot.prime.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.PersistentLoginDTO; import org.hwbot.prime.api.NetworkStatusAware; import org.hwbot.prime.api.PersistentLoginAware; import org.hwbot.prime.service.BenchService; import android.os.AsyncTask; import android.util.Log; import com.google.gson.Gson; public class LoginTokenTask extends AsyncTask<Void, Void, PersistentLoginDTO> { private String token; private PersistentLoginAware observer; private NetworkStatusAware networkStatusAware; public LoginTokenTask(NetworkStatusAware networkStatusAware, PersistentLoginAware observer, String token) { this.networkStatusAware = networkStatusAware; this.observer = observer; this.token = token; } @Override protected PersistentLoginDTO doInBackground(Void... params) { BufferedReader reader = null; try { URL hwbotRanking = new URL(BenchService.SERVER + "/api/authenticate?token=" + token); reader = new BufferedReader(new InputStreamReader(hwbotRanking.openStream())); PersistentLoginDTO loginToken = new Gson().fromJson(reader, PersistentLoginDTO.class); // Log.i(this.getClass().getSimpleName(), "Token: " + loginToken); observer.notifyPersistentLoginOk(loginToken); return loginToken; } catch (UnknownHostException e) { Log.w(this.getClass().getSimpleName(), "No network access: " + e.getMessage()); networkStatusAware.showNetworkPopupOnce(); } catch (Exception e) { Log.i(this.getClass().getSimpleName(), "Error: " + e.getMessage()); e.printStackTrace(); observer.notifyPersistentLoginFailed("Login failed: " + e.getMessage()); } finally { try { if (reader != null) { reader.close(); } } catch (IOException e) { e.printStackTrace(); } } return null; } }