dersvenhesse / ios-grades

Grades was a mobile app for iOS devices to fetch grades from universities' QIS websites.
Apache License 2.0
2 stars 2 forks source link

TU Kaiserslautern hinzufügen #2

Closed danielkrohmer closed 7 years ago

danielkrohmer commented 7 years ago

Hey,

wäre es möglich die TU Kaiserslautern auch noch der Datei schools.swift hinzuzufügen?

School( key: "tukl", name: "Technische Universität Kaiserslautern", order: "K", url: "qis.verw.uni-kl.de" ),

dersvenhesse commented 7 years ago

Mit der reinen Konfiguration ist es leider nicht unbedingt getan. Jede Hochschule hat eine minimal andere HTML-Struktur der Notenliste, daher müsste zudem auch geprüft werden ob die regulären Ausdrücke im RequestManager – insbesondere in findList() – auch bei der TU Kaiserslautern greifen. Könntest du das zunächst lokal testen? Wenn ja füge ich die Hochschule gerne hinzu.

danielkrohmer commented 7 years ago

Hey, danke erstmal für deine zügige Antwort und generell dein Engagement bezüglich dieser App! Zunächst einmal müsste ich die Werte von schools.swift korrigieren, es fehlt noch der urltrail:

School( key: "tukl", name: "Technische Universität Kaiserslautern", order: "K", url: "qis.verw.uni-kl.de", urltrail: "/qisserver/rds?state=" ),

weiterhin habe mir mal den Quelltext angeschaut und mit unserem QIS-System verglichen. Von den regulären ausdrücken müsste es eigentlich passen, allerdings ist die URL-Struktur etwas anders (btw: ich bin mir nicht sicher was es mit der asi-Variablen auf sich hat, gehe aber davon aus, dass es sich einfach um einen 18-stelligen Identifier aus Buchstaben und Ziffern handelt). Die URL stimmt bei unserem System nach der Variablen "degree" nicht mehr mit der aus der Funktion findList überein, viel mehr wäre es bei uns:

https://" + school.url + school.urlTrail + "notenspiegelStudent&next=list.vm&nextdir=qispos/notenspiegel/student&createInfos=Y&struct=auswahlBaum&nodeID=auswahlBaum%7Cabschluss%3Aabschl%3D" + degree + "%7Cstudiengang%3Astg%3DA44&expand=0&asi=" + asi

Hoffe du kannst damit etwas anfangen. Gruß, Daniel!

dersvenhesse commented 7 years ago

Ja, die ASI eine quasi ein Token, welchen das QIS-System für die jeweilige Sitzung generiert und welcher bei allen Requests mitgegeben werden muss.

Deine URL enthält mit A44 deinen spezifischen Studiengang, diese Werte versucht Grades in findDegree() auszulesen. Dieses Vorgehen ist bisher für alle Hochschulen passend. Oft enthalten die URLs der Notenliste auch noch weitere Variablen, welche für Grades nicht unbedingt nötig sind.

Besteht für dich die Möglichkeit das Projekt auf deinem Rechner via Xcode auszuprobieren? Wenn ja, könnten wir so stückchenweise versuchen die Kompatibilität sicherzustellen.

danielkrohmer commented 7 years ago

Bin win-Nutzer, kann mir aber schnell ne VM mit macOS aufsetzen

danielkrohmer commented 7 years ago

Ok habe nach etwas hin und her alles zum Laufen gekriegt und den Code wie oben stehend editiert und es würde so funktionieren. Interessant wäre nur noch, ob es allgemeingültig ist :D screen: http://imgur.com/a/1zFpx

dersvenhesse commented 7 years ago

Fein dass es klappt. :) Könntest du aus deinen Änderungen eventuell einen Pull-Request machen? Dann würde ich das prüfen und ggf. einbauen.

danielkrohmer commented 7 years ago

done :)

dersvenhesse commented 7 years ago

Ok, dann schauen wir mal wie wir das zusammenbasteln. Den weiteren Austausch machen wir dann direkt im PR https://github.com/dersvenhesse/ios-grades/pull/3.

dersvenhesse commented 7 years ago

Der PR https://github.com/dersvenhesse/ios-grades/pull/3 ist integriert. Könntest du deine Hochschule nochmal testen? Wenn da alles passt, würde ich die Änderungen als neue Version einreichen.

danielkrohmer commented 7 years ago

Feine Sache, funktioniert einwandfrei!

dersvenhesse commented 7 years ago

Ok, die Version 2017.01.12 ist eingereicht und sollte in den nächsten Tagen als Update freigegeben werden.

Ich hoffe noch, dass besagte A44 in der URL nicht spezifisch für deinen Studiengang ist, sonst müsste dieser Wert auch zunächst aus einer der vorigen Seiten geparst werden. Falls dies der Fall ist, müssten wir da ggf. nochmal zusammen schauen.