Lepší zacházení s chybami

This commit is contained in:
Matyáš Caras 2022-04-12 14:25:21 +02:00
parent c3333fca95
commit 9e03d33ad2
2 changed files with 38 additions and 28 deletions

View file

@ -1,3 +1,6 @@
## 0.1.0-alpha.15
- Úprava nakládání s chybami v `_getRequest`
- `fail` je chyba
## 0.1.0-alpha.14 ## 0.1.0-alpha.14
- Oprava `ziskejBurzu`, kvůli špatnému parsování - Oprava `ziskejBurzu`, kvůli špatnému parsování
## 0.1.0-alpha.13 ## 0.1.0-alpha.13

View file

@ -156,9 +156,15 @@ class Canteen {
? "; " + cookies["remember-me"]! + ";" ? "; " + cookies["remember-me"]! + ";"
: ";"), : ";"),
}); });
if (r.statusCode != 200 || r.body.contains("fail")) { if (r.statusCode != 200 ||
r.body.contains("fail") ||
r.body.contains("Chyba")) {
return Future.error("Chyba: ${r.body}"); return Future.error("Chyba: ${r.body}");
} }
if (r.body.contains("přihlášení uživatele")) {
prihlasen = false;
return Future.error("Uživatel není přihlášen");
}
if (r.headers.containsKey("set-cookie")) { if (r.headers.containsKey("set-cookie")) {
_parseCookies(r.headers["set-cookie"]!); _parseCookies(r.headers["set-cookie"]!);
} }
@ -249,11 +255,12 @@ class Canteen {
return Future.error("Uživatel není přihlášen"); return Future.error("Uživatel není přihlášen");
} }
den ??= DateTime.now(); den ??= DateTime.now();
var res = await _getRequest( String res;
"/faces/secured/main.jsp?day=${den.year}-${(den.month < 10) ? "0" + den.month.toString() : den.month}-${(den.day < 10) ? "0" + den.day.toString() : den.day}&terminal=false&printer=false&keyboard=false"); try {
if (res.contains("<title>iCanteen - přihlášení uživatele</title>")) { res = await _getRequest(
prihlasen = false; "/faces/secured/main.jsp?day=${den.year}-${(den.month < 10) ? "0" + den.month.toString() : den.month}-${(den.day < 10) ? "0" + den.day.toString() : den.day}&terminal=false&printer=false&keyboard=false");
return Future.error("Uživatel není přihlášen"); } catch (e) {
return Future.error(e);
} }
var obedDen = DateTime.parse(RegExp(r'(?<=day-).+?(?=")', dotAll: true) var obedDen = DateTime.parse(RegExp(r'(?<=day-).+?(?=")', dotAll: true)
.firstMatch(res)! .firstMatch(res)!
@ -343,14 +350,11 @@ class Canteen {
return Future.error( return Future.error(
"Jídlo nelze objednat nebo nemá adresu pro objednání"); "Jídlo nelze objednat nebo nemá adresu pro objednání");
} }
var res =
await _getRequest("/faces/secured/" + j.orderUrl!); // provést operaci try {
if (res.contains("Chyba")) { await _getRequest("/faces/secured/" + j.orderUrl!); // provést operaci
return Future.error("Při požadavku došlo k chybě"); } catch (e) {
} return Future.error(e);
if (res.contains("přihlášení uživatele")) {
prihlasen = false;
return Future.error("Uživatel není přihlášen");
} }
var novy = (await jidelnicekDen(den: j.den)) var novy = (await jidelnicekDen(den: j.den))
@ -378,12 +382,10 @@ class Canteen {
return Future.error( return Future.error(
"Jídlo nelze uložit do burzy nebo nemá adresu pro uložení"); "Jídlo nelze uložit do burzy nebo nemá adresu pro uložení");
} }
var res = try {
await _getRequest("/faces/secured/" + j.burzaUrl!); // provést operaci await _getRequest("/faces/secured/" + j.burzaUrl!); // provést operaci
if (res.contains("Chyba")) return Future.error("Chyba při vykonávání"); } catch (e) {
if (res.contains("přihlášení uživatele")) { return Future.error(e);
prihlasen = false;
return Future.error("Uživatel není přihlášen");
} }
var novy = (await jidelnicekDen(den: j.den)) var novy = (await jidelnicekDen(den: j.den))
@ -403,15 +405,17 @@ class Canteen {
Future<List<Burza>> ziskatBurzu() async { Future<List<Burza>> ziskatBurzu() async {
if (!prihlasen) return Future.error("Uživatel není přihlášen"); if (!prihlasen) return Future.error("Uživatel není přihlášen");
List<Burza> burza = []; List<Burza> burza = [];
var r = await _getRequest("/faces/secured/burza.jsp");
if (r.contains("Chyba")) return Future.error("Při požadavku došlo k chybě"); String res;
if (r.contains("přihlášení uživatele")) { try {
prihlasen = false; res = await _getRequest("/faces/secured/burza.jsp");
return Future.error("Uživatel není přihlášen"); } catch (e) {
return Future.error(e);
} }
var dostupnaJidla = var dostupnaJidla =
RegExp(r'(?<=<tr class="mouseOutRow">).+?(?=<\/tr>)', dotAll: true) RegExp(r'(?<=<tr class="mouseOutRow">).+?(?=<\/tr>)', dotAll: true)
.allMatches(r); // vyfiltrujeme jednotlivá jídla .allMatches(res); // vyfiltrujeme jednotlivá jídla
if (dostupnaJidla.isNotEmpty) { if (dostupnaJidla.isNotEmpty) {
for (var burzaMatch in dostupnaJidla) { for (var burzaMatch in dostupnaJidla) {
var bu = burzaMatch.group(0)!; var bu = burzaMatch.group(0)!;
@ -455,8 +459,11 @@ class Canteen {
/// - [bool], `true`, pokud bylo jídlo úspěšně objednáno z burzy, jinak `false` /// - [bool], `true`, pokud bylo jídlo úspěšně objednáno z burzy, jinak `false`
Future<bool> objednatZBurzy(Burza b) async { Future<bool> objednatZBurzy(Burza b) async {
if (!prihlasen) return Future.error("Uživatel není přihlášen"); if (!prihlasen) return Future.error("Uživatel není přihlášen");
var res = await _getRequest("/faces/secured/" + b.url!); // TODO: SPRAVIT try {
if (res.contains("Chyba")) return false; await _getRequest("/faces/secured/" + b.url!); // TODO: SPRAVIT
} catch (e) {
return false;
}
return true; return true;
} }
} }