From 86d8078aca65da050960d63387a3b00c3d686fd0 Mon Sep 17 00:00:00 2001 From: Caesar2011 Date: Mon, 28 Jan 2019 17:30:08 +0100 Subject: [PATCH] "Blackboard never used" check introduced --- .../services/fulogin/UserLoginTask.java | 9 ++++++++- .../services/kvv/ModulesAnnouncements.java | 11 ++--------- .../fuplanner/services/kvv/ModulesList.java | 10 ++++++++-- .../services/kvv/types/LoginTokenBB.java | 16 ++++++++++++++++ .../services/kvv/types/LoginTokenKVV.java | 16 ++++++++++++++++ docs/blackboard.txt | 8 ++++---- 6 files changed, 54 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/de/sebse/fuplanner/services/fulogin/UserLoginTask.java b/app/src/main/java/de/sebse/fuplanner/services/fulogin/UserLoginTask.java index c4ea487..04e66ac 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/fulogin/UserLoginTask.java +++ b/app/src/main/java/de/sebse/fuplanner/services/fulogin/UserLoginTask.java @@ -79,7 +79,14 @@ public class UserLoginTask extends AsyncTask { mBBLogin.testLoginToken(success, success1 -> { login.set(success1.toJsonString()); latch.countDown(); - }, errorFunc); + }, error -> { + if (error.getCode() == 100270) { + // Blackboard never used + success.setNotAvailable(); + login.set(success.toJsonString()); + } + errorFunc.onError(error); + }); }, errorFunc); break; default: diff --git a/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesAnnouncements.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesAnnouncements.java index 459d4bb..36fbbad 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesAnnouncements.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesAnnouncements.java @@ -35,7 +35,7 @@ public class ModulesAnnouncements extends PartModules> { @Override protected void upgradeKVV(final String ID, final NetworkCallback> callback, final NetworkErrorCallback errorCallback) { - if (!mLogin.isInOnlineMode() || mLogin.getLoginTokenKVV() == null) { + if (!mLogin.isInOnlineMode() || mLogin.getLoginTokenKVV() == null || !mLogin.getLoginTokenKVV().isAvailable()) { errorCallback.onError(new NetworkError(101204, 500, "Currently running in offline mode!")); return; } @@ -92,7 +92,7 @@ public class ModulesAnnouncements extends PartModules> { @Override protected void upgradeBB(String ID, NetworkCallback> callback, NetworkErrorCallback errorCallback) { - if (!mLogin.isInOnlineMode() || mLogin.getLoginTokenBB() == null) { + if (!mLogin.isInOnlineMode() || mLogin.getLoginTokenBB() == null || !mLogin.getLoginTokenBB().isAvailable()) { errorCallback.onError(new NetworkError(101214, 500, "Currently running in offline mode!")); return; } @@ -122,14 +122,7 @@ public class ModulesAnnouncements extends PartModules> { text = String.valueOf(fromHtml(text)); String createdBy = "";//site.getString("createdByDisplayName"); long createdOn = UtilsDate.stringToMillis(site.getString("startDateRestriction"), "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); - //long createdOn = 0;//site.getLong("createdOn"); - - // Extract attachment links - //JSONArray attachments = site.getJSONArray("attachments"); ArrayList urls = new ArrayList<>(); - /*for (int j = 0; j < attachments.length(); j++) { - urls.add(attachments.getJSONObject(j).optString("url", null)); - }*/ announcements.add(new Announcement(id, title, text, createdBy, createdOn, urls)); } catch (JSONException e) { diff --git a/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesList.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesList.java index 99ddc84..376a08d 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesList.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesList.java @@ -9,10 +9,8 @@ import org.json.JSONObject; import java.io.FileNotFoundException; import java.io.IOException; -import java.util.ArrayList; import java.util.HashSet; import java.util.LinkedHashSet; -import java.util.concurrent.CountDownLatch; import java.util.regex.MatchResult; import de.sebse.fuplanner.services.kvv.types.Lecturer; @@ -164,6 +162,10 @@ public class ModulesList extends HTTPService { errorCallback.onError(new NetworkError(101110, 500, "Currently running in offline mode!")); return; } + if (!mLogin.getLoginTokenKVV().isAvailable()) { + callback.onResponse(new Modules(mLogin.getLoginTokenKVV().getUsername())); + return; + } get("https://kvv.imp.fu-berlin.de/direct/site.json", mLogin.getLoginTokenKVV().getCookies(), response -> { String body = response.getParsed(); if (body == null) { @@ -227,6 +229,10 @@ public class ModulesList extends HTTPService { errorCallback.onError(new NetworkError(101120, 500, "Currently running in offline mode!")); return; } + if (!mLogin.getLoginTokenBB().isAvailable()) { + callback.onResponse(modulesKVV); + return; + } get(String.format("https://lms.fu-berlin.de/learn/api/public/v1/users/%s/courses", mLogin.getLoginTokenBB().getId()), mLogin.getLoginTokenBB().getCookies(), response -> { String body = response.getParsed(); if (body == null) { diff --git a/app/src/main/java/de/sebse/fuplanner/services/kvv/types/LoginTokenBB.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/LoginTokenBB.java index dc180fa..1650cc7 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/kvv/types/LoginTokenBB.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/LoginTokenBB.java @@ -18,6 +18,7 @@ public class LoginTokenBB { private final String s_session_id; private final String session_id; private final String username; + private boolean isAvailable = true; @Nullable private String id; @Nullable private String studentId; @@ -48,6 +49,17 @@ public class LoginTokenBB { public void setAdditionals(String id, String studentId) { this.id = id; this.studentId = studentId; + this.isAvailable = true; + } + + public void setNotAvailable() { + this.id = null; + this.studentId = null; + this.isAvailable = false; + } + + public boolean isAvailable() { + return isAvailable; } public String getUsername() { @@ -102,6 +114,7 @@ public class LoginTokenBB { json.put("username", username); json.put("id", id); json.put("studentId", studentId); + json.put("isAvailable", isAvailable); } catch (JSONException e) { return null; } @@ -120,6 +133,9 @@ public class LoginTokenBB { json.getString("id"), json.getString("studentId") ); + if (!json.optBoolean("isAvailable", true)) { + token.setNotAvailable(); + } return token; } catch (JSONException e) { e.printStackTrace(); diff --git a/app/src/main/java/de/sebse/fuplanner/services/kvv/types/LoginTokenKVV.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/LoginTokenKVV.java index 07d51b1..99e527a 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/kvv/types/LoginTokenKVV.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/types/LoginTokenKVV.java @@ -17,6 +17,7 @@ import de.sebse.fuplanner.tools.CustomAccountManager; public class LoginTokenKVV { private final String username; private final String JSESSIONID; + private boolean isAvailable = true; @Nullable private String fullName; @Nullable private String email; @@ -46,6 +47,17 @@ public class LoginTokenKVV { public void setAdditionals(String fullName, String email) { this.fullName = fullName; this.email = email; + this.isAvailable = true; + } + + public void setNotAvailable() { + this.fullName = null; + this.email = null; + this.isAvailable = false; + } + + public boolean isAvailable() { + return isAvailable; } public String getUsername() { @@ -95,6 +107,7 @@ public class LoginTokenKVV { json.put("JSESSIONID", JSESSIONID); json.put("fullName", fullName); json.put("email", email); + json.put("isAvailable", isAvailable); } catch (JSONException e) { return null; } @@ -112,6 +125,9 @@ public class LoginTokenKVV { json.getString("fullName"), json.getString("email") ); + if (!json.optBoolean("isAvailable", true)) { + token.setNotAvailable(); + } return token; } catch (JSONException e) { e.printStackTrace(); diff --git a/docs/blackboard.txt b/docs/blackboard.txt index f14d16b..cabaa12 100644 --- a/docs/blackboard.txt +++ b/docs/blackboard.txt @@ -14,7 +14,7 @@ https://lms.fu-berlin.de/learn/api/public/v1/users/_203980_1/courses ## Course details -https://lms.fu-berlin.de/learn/api/v1/courses/_122802_1 +https://lms.fu-berlin.de/learn/api/public/v1/courses/_122802_1 The field "courseId" in Blackboard can be matched to "props/kvv_lvnumbers" in "http://kvv.imp.fu-berlin.de/direct/site/" @@ -25,7 +25,7 @@ The field "courseId" in Blackboard can be matched to "props/kvv_lvnumbers" in "h + lvNumber * parse "courseId" + title - * "displayName" + * "name" + lecturer * https://lms.fu-berlin.de/learn/api/public/v1/courses/_127131_1/users * Find Instructor @@ -33,7 +33,7 @@ The field "courseId" in Blackboard can be matched to "props/kvv_lvnumbers" in "h + type * parse "courseId" ('Vorlesung'/'Seminar'/...?) + description - * description + * "" + ID * id @@ -86,4 +86,4 @@ https://lms.fu-berlin.de/learn/api/public/v1/courses/_127131_1/contents + https://lms.fu-berlin.de/learn/api/public/v1/courses/_127131_1/contents/_3635282_1/attachments + text: "body" - Attachment-Download - + https://lms.fu-berlin.de/learn/api/public/v1/courses/_127131_1/contents/_3635282_1/attachments/_2838023_1/download \ No newline at end of file + + https://lms.fu-berlin.de/learn/api/public/v1/courses/_127131_1/contents/_3635282_1/attachments/_2838023_1/download