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 {
|
public class BBLogin extends HTTPService {
|
||||||
private final FULogin mFULogin;
|
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) {
|
public BBLogin(Context context, FULogin fuLogin) {
|
||||||
super(context);
|
super(context);
|
||||||
@@ -25,6 +28,10 @@ public class BBLogin extends HTTPService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void testLoginToken(@NotNull LoginTokenBB token, @NotNull NetworkCallback<LoginTokenBB> callback, @NotNull NetworkErrorCallback errorCallback) {
|
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 -> {
|
get(String.format("https://lms.fu-berlin.de/learn/api/public/v1/users/?userName=%s", token.getUsername()), token.getCookies(), response -> {
|
||||||
String body = response.getParsed();
|
String body = response.getParsed();
|
||||||
if (body == null) {
|
if (body == null) {
|
||||||
@@ -37,6 +44,8 @@ public class BBLogin extends HTTPService {
|
|||||||
String id = json.getString("id");
|
String id = json.getString("id");
|
||||||
String studentId = json.getString("studentId");
|
String studentId = json.getString("studentId");
|
||||||
token.setAdditionals(id, studentId);
|
token.setAdditionals(id, studentId);
|
||||||
|
lastSync = System.currentTimeMillis();
|
||||||
|
lastHash = token.hashCode();
|
||||||
callback.onResponse(token);
|
callback.onResponse(token);
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
errorCallback.onError(new NetworkError(100271, 403, "Cannot parse profile!"));
|
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 {
|
public class KVVLogin extends HTTPService {
|
||||||
private final FULogin mFULogin;
|
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) {
|
public KVVLogin(Context context, FULogin fuLogin) {
|
||||||
super(context);
|
super(context);
|
||||||
@@ -26,6 +29,10 @@ public class KVVLogin extends HTTPService {
|
|||||||
|
|
||||||
|
|
||||||
public void testLoginToken(@NotNull LoginTokenKVV token, @NotNull NetworkCallback<LoginTokenKVV> callback, @NotNull NetworkErrorCallback errorCallback) {
|
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 -> {
|
get(String.format("https://kvv.imp.fu-berlin.de/direct/profile/%s.json", token.getUsername()), token.getCookies(), response -> {
|
||||||
String body = response.getParsed();
|
String body = response.getParsed();
|
||||||
if (body == null) {
|
if (body == null) {
|
||||||
@@ -37,6 +44,8 @@ public class KVVLogin extends HTTPService {
|
|||||||
String displayName = json.getString("displayName");
|
String displayName = json.getString("displayName");
|
||||||
String email = json.getString("email");
|
String email = json.getString("email");
|
||||||
token.setAdditionals(displayName, email);
|
token.setAdditionals(displayName, email);
|
||||||
|
lastSync = System.currentTimeMillis();
|
||||||
|
lastHash = token.hashCode();
|
||||||
callback.onResponse(token);
|
callback.onResponse(token);
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
errorCallback.onError(new NetworkError(100171, 403, "Cannot parse profile!"));
|
errorCallback.onError(new NetworkError(100171, 403, "Cannot parse profile!"));
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package de.sebse.fuplanner.services.kvv.types;
|
package de.sebse.fuplanner.services.kvv.types;
|
||||||
|
|
||||||
|
import com.google.android.gms.common.internal.Objects;
|
||||||
|
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
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 {
|
public interface LoginTokenInterface {
|
||||||
void run(LoginTokenBB token);
|
void run(LoginTokenBB token);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package de.sebse.fuplanner.services.kvv.types;
|
package de.sebse.fuplanner.services.kvv.types;
|
||||||
|
|
||||||
|
import com.google.android.gms.common.internal.Objects;
|
||||||
|
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
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 {
|
public interface LoginTokenInterface {
|
||||||
void run(LoginTokenKVV token);
|
void run(LoginTokenKVV token);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user