diff --git a/app/build.gradle b/app/build.gradle index c9bd78a..db912c8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -7,8 +7,8 @@ android { applicationId "de.sebse.fuplanner" minSdkVersion 15 targetSdkVersion 28 - versionCode 6 - versionName "1.1.4" + versionCode 7 + versionName "1.1.5" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/KVVLogin.java b/app/src/main/java/de/sebse/fuplanner/services/KVV/KVVLogin.java index bd8c32f..03604a7 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/KVVLogin.java +++ b/app/src/main/java/de/sebse/fuplanner/services/KVV/KVVLogin.java @@ -215,10 +215,16 @@ class KVVLogin extends HTTPService { cookies.put("ROUTEID", ROUTEID); cookies.put("_idp_session", _idp_session); get("https://identity.fu-berlin.de/idp-fub/profile/SAML2/Redirect/SSO", cookies, response -> { + String body = response.getParsed(); + if (body == null) { + errorCallback.onError(new NetworkError(100143, -1, "Error on getting SAML response!")); + return; + } + HashMap object = new HashMap<>(); Pattern pattern = Pattern.compile("ss:mem:([0-9a-f]+)"); - Matcher matcher = pattern.matcher(response.getParsed()); + Matcher matcher = pattern.matcher(body); if (!matcher.find()) { errorCallback.onError(new NetworkError(100142, -1, "Error on getting SAML response!")); return; @@ -226,7 +232,7 @@ class KVVLogin extends HTTPService { object.put("RelayState", "ss:mem:"+matcher.group(1)); pattern = Pattern.compile("name=\"SAMLResponse\" value=\"([0-9a-zA-Z+]+=*)"); - matcher = pattern.matcher(response.getParsed()); + matcher = pattern.matcher(body); if (!matcher.find()) { errorCallback.onError(new NetworkError(100141, -1, "Error on getting SAML response!")); return; diff --git a/app/src/main/java/de/sebse/fuplanner/services/KVV/TestLogin.java b/app/src/main/java/de/sebse/fuplanner/services/KVV/TestLogin.java index 473f0cb..48c9449 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/KVV/TestLogin.java +++ b/app/src/main/java/de/sebse/fuplanner/services/KVV/TestLogin.java @@ -20,6 +20,10 @@ final class TestLogin extends HTTPService { static void testLogin(Context context, LoginToken loginToken, NetworkCallback callback, NetworkErrorCallback errorCallback) { new TestLogin(context).get(String.format("https://kvv.imp.fu-berlin.de/direct/profile/%s.json", loginToken.getUsername()), loginToken.getCookies(), response -> { String body = response.getParsed(); + if (body == null) { + errorCallback.onError(new NetworkError(100202, 403, "Testing login failed!")); + return; + } try { JSONObject json = new JSONObject(body); String displayName = json.getString("displayName"); diff --git a/app/src/main/java/de/sebse/fuplanner/tools/network/Result.java b/app/src/main/java/de/sebse/fuplanner/tools/network/Result.java index 496f860..c295181 100644 --- a/app/src/main/java/de/sebse/fuplanner/tools/network/Result.java +++ b/app/src/main/java/de/sebse/fuplanner/tools/network/Result.java @@ -5,19 +5,24 @@ import com.android.volley.toolbox.HttpHeaderParser; import java.io.UnsupportedEncodingException; import java.util.Map; +import androidx.annotation.Nullable; + /** * Created by sebastian on 24.10.17. */ public class Result { - private final byte[] body; + @Nullable private final byte[] body; private final Map headers; - public Result(byte[] body, Map headers) { + Result(@Nullable byte[] body, Map headers) { this.body = body; this.headers = headers; } + @Nullable public String getParsed() { + if (this.body == null) + return null; try { return new String(this.body, HttpHeaderParser.parseCharset(headers)); } catch (UnsupportedEncodingException e) { @@ -25,6 +30,7 @@ public class Result { } } + @Nullable public byte[] getBytes() { return body; }