Reuse testLoginToken result if set in last 30 secounds
This commit is contained in:
@@ -18,6 +18,9 @@ import de.sebse.fuplanner.tools.network.NetworkErrorCallback;
|
||||
|
||||
public class BBLogin extends HTTPService {
|
||||
private final FULogin mFULogin;
|
||||
private long lastHash;
|
||||
private long lastSync;
|
||||
private static final long MAX_CACHE_TIME = 1000 * 60; // 1 minute
|
||||
|
||||
public BBLogin(Context context, FULogin fuLogin) {
|
||||
super(context);
|
||||
@@ -25,6 +28,10 @@ public class BBLogin extends HTTPService {
|
||||
}
|
||||
|
||||
public void testLoginToken(@NotNull LoginTokenBB token, @NotNull NetworkCallback<LoginTokenBB> callback, @NotNull NetworkErrorCallback errorCallback) {
|
||||
if (token.hashCode() == lastHash && lastSync + MAX_CACHE_TIME > System.currentTimeMillis() && token.getStudentId() != null) {
|
||||
callback.onResponse(token);
|
||||
return;
|
||||
}
|
||||
get(String.format("https://lms.fu-berlin.de/learn/api/public/v1/users/?userName=%s", token.getUsername()), token.getCookies(), response -> {
|
||||
String body = response.getParsed();
|
||||
if (body == null) {
|
||||
@@ -37,6 +44,8 @@ public class BBLogin extends HTTPService {
|
||||
String id = json.getString("id");
|
||||
String studentId = json.getString("studentId");
|
||||
token.setAdditionals(id, studentId);
|
||||
lastSync = System.currentTimeMillis();
|
||||
lastHash = token.hashCode();
|
||||
callback.onResponse(token);
|
||||
} catch (JSONException e) {
|
||||
errorCallback.onError(new NetworkError(100271, 403, "Cannot parse profile!"));
|
||||
|
||||
@@ -18,6 +18,9 @@ import de.sebse.fuplanner.tools.network.NetworkErrorCallback;
|
||||
|
||||
public class KVVLogin extends HTTPService {
|
||||
private final FULogin mFULogin;
|
||||
private long lastHash;
|
||||
private long lastSync;
|
||||
private static final long MAX_CACHE_TIME = 1000 * 60; // 1 minute
|
||||
|
||||
public KVVLogin(Context context, FULogin fuLogin) {
|
||||
super(context);
|
||||
@@ -26,6 +29,10 @@ public class KVVLogin extends HTTPService {
|
||||
|
||||
|
||||
public void testLoginToken(@NotNull LoginTokenKVV token, @NotNull NetworkCallback<LoginTokenKVV> callback, @NotNull NetworkErrorCallback errorCallback) {
|
||||
if (token.hashCode() == lastHash && lastSync + MAX_CACHE_TIME > System.currentTimeMillis() && token.getFullName() != null) {
|
||||
callback.onResponse(token);
|
||||
return;
|
||||
}
|
||||
get(String.format("https://kvv.imp.fu-berlin.de/direct/profile/%s.json", token.getUsername()), token.getCookies(), response -> {
|
||||
String body = response.getParsed();
|
||||
if (body == null) {
|
||||
@@ -37,6 +44,8 @@ public class KVVLogin extends HTTPService {
|
||||
String displayName = json.getString("displayName");
|
||||
String email = json.getString("email");
|
||||
token.setAdditionals(displayName, email);
|
||||
lastSync = System.currentTimeMillis();
|
||||
lastHash = token.hashCode();
|
||||
callback.onResponse(token);
|
||||
} catch (JSONException e) {
|
||||
errorCallback.onError(new NetworkError(100171, 403, "Cannot parse profile!"));
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package de.sebse.fuplanner.services.kvv.types;
|
||||
|
||||
import com.google.android.gms.common.internal.Objects;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
@@ -143,6 +145,11 @@ public class LoginTokenBB {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hashCode(s_session_id, session_id, username, id, studentId);
|
||||
}
|
||||
|
||||
public interface LoginTokenInterface {
|
||||
void run(LoginTokenBB token);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package de.sebse.fuplanner.services.kvv.types;
|
||||
|
||||
import com.google.android.gms.common.internal.Objects;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
@@ -135,6 +137,11 @@ public class LoginTokenKVV {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hashCode(username, JSESSIONID, fullName, email);
|
||||
}
|
||||
|
||||
public interface LoginTokenInterface {
|
||||
void run(LoginTokenKVV token);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user