Skip to content

Commit

Permalink
Merge pull request #3 from Autojidelna/v2.10.27
Browse files Browse the repository at this point in the history
  • Loading branch information
tpkowastaken authored Jan 21, 2024
2 parents b60810e + 8739298 commit 02d57de
Show file tree
Hide file tree
Showing 13 changed files with 992 additions and 146 deletions.
10 changes: 10 additions & 0 deletions .github/workflows/dart.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,13 @@ jobs:
- name: Test pro obedy.zs-mat5.cz
run: dart test

# Testing pro obedy.ss-stavebnikolin.cz
- name: Credentials pro obedy.ss-stavebnikolin.cz
run: |
echo "URL= 'obedy.ss-stavebnikolin.cz'" > .env
echo "USER= '${{ secrets.USER3 }}'" >> .env
echo "PASS= '${{ secrets.PASS3 }}'" >> .env
- name: Test pro obedy.ss-stavebnikolin.cz
run: dart test
10 changes: 10 additions & 0 deletions .github/workflows/pub-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,16 @@ jobs:
- name: Test pro obedy.zs-mat5.cz
run: dart test

# Testing pro obedy.ss-stavebnikolin.cz
- name: Credentials pro obedy.ss-stavebnikolin.cz
run: |
echo "URL= 'obedy.ss-stavebnikolin.cz'" > .env
echo "USER= '${{ secrets.USER3 }}'" >> .env
echo "PASS= '${{ secrets.PASS3 }}'" >> .env
- name: Test pro obedy.ss-stavebnikolin.cz
run: dart test

- name: Removing credentials
run: rm -rf .env

Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,4 @@ pubspec.lock
.vscode
hidden_testing
jidelnicek.html
s.html
15 changes: 8 additions & 7 deletions COMPATIBILITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,13 @@ Kantýny, které v adrese obsahují i číslo portu, dokážou být často probl
- ✅ - plně funkční nebo pouze s malými chybami
- ❓ - částečně funkční

| Provozovatel | Verze iCanteen | Funkční | Adresa |
| :-------------------: | ---------------- | ------- | ----------------------------------- |
| SŠTE Brno | iCanteen 2.19.13 || https://stravovani.sstebrno.cz |
| SPŠ Třebíč | iCanteen 2.10.25 || https://icanteen.spst.cz |
| SPŠEI Ostrava | iCanteen 2.17.03 || https://obedy.spseiostrava.cz:8443/ |
| SPŠ a G Na Třebešíně | iCanteen 2.18.03 || https://jidelna.trebesin.cz |
| ZŠ Ostrava, Matiční 5 | iCanteen 2.18.19 || http://obedy.zs-mat5.cz |
| Provozovatel | Verze iCanteen | Funkční | Adresa |
| :-------------------------------: | ---------------- | ------- | ----------------------------------- |
| SŠTE Brno | iCanteen 2.19.13 || https://stravovani.sstebrno.cz |
| SPŠ Třebíč | iCanteen 2.10.25 || https://icanteen.spst.cz |
| SPŠEI Ostrava | iCanteen 2.17.03 || https://obedy.spseiostrava.cz:8443/ |
| SOŠ stavební a SOU stavební Kolín | iCanteen 2.10.27 || http://obedy.ss-stavebnikolin.cz/ |
| SPŠ a G Na Třebešíně | iCanteen 2.18.03 || https://jidelna.trebesin.cz |
| ZŠ Ostrava, Matiční 5 | iCanteen 2.18.19 || http://obedy.zs-mat5.cz |

Pokud chcete přispět s testem, otestujte tuto knihovnu na instanci iCanteen, kde, nejlépe legálně, máte přístup, a nahlašte své poznatky do [github issues](https://github.com/tpkowastaken/icanteenlib/issues/new?assignees=tpkowastaken&labels=kompatibilita&projects=&template=hl--en--kompatibility.md&title=Kompatibilita%3A+) (i pokud fungují prosím)
55 changes: 50 additions & 5 deletions Full Compatibility.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# V tomto souboru je rozepsaná každá featura pro každou instituci. Je to takový to-do list

➖ - v instituci není featura potřeba
➖ - v instituci není featura potřeba nebo není v dané verzi icanteen
✅ - featura funguje
❌ - featura nefunguje
❓ - featura funguje částečně nebo nelze vyzkoušet
Expand Down Expand Up @@ -34,6 +34,7 @@
- název
- rozdělení na kategorie
- blokováno (vypršela platnost)
- Jídelníček pro měsíc
- Objednávání
- funguje objednávání
- funguje zrušení
Expand All @@ -42,6 +43,8 @@
- Objednávání z burzy
- vložení jídla na burzu
- zrušit vložení jídla na burzu
- počet
- Výdejny (jiné lokace)

# Spš a G Na Třebešíně - verze 2.18.03

Expand All @@ -56,7 +59,7 @@
- specifický symbol ❓
- Uživatelské jméno ✅
- Jídelníček pro den ✅
- správný počet jídel ❓ - v autojídelně vyřešeno wrapperem.
- správný počet jídel
- jídlo ✅
- název ✅
- cena ✅
Expand All @@ -69,6 +72,7 @@
- podrobnosti ✅
- název ✅
- rozdělení na kategorie ✅
- Jídelníček pro měsíc ✅
- Objednávání
- funguje objednávání ✅
- funguje zrušení ✅
Expand All @@ -78,6 +82,7 @@
- vložení jídla na burzu ✅
- zrušit vložení jídla na burzu ✅
- počet ➖
- Výdejny (jiné lokace) ➖

# Základní škola Ostrava, Matiční 5

Expand All @@ -92,7 +97,7 @@
- specifický symbol ❓
- Uživatelské jméno ✅
- Jídelníček pro den ✅
- správný počet jídel ❓ - v autojídelně vyřešeno wrapperem.
- správný počet jídel
- jídlo ✅
- název ✅ má dvě mezery
- cena ✅
Expand All @@ -105,12 +110,52 @@
- podrobnosti ✅
- název ✅
- rozdělení na kategorie ✅
- Jídelníček pro měsíc ✅
- Objednávání
- funguje objednávání ✅
- funguje zrušení ✅
- Burza
- získání burzy
- Objednávání z burzy
- získání burzy
- Objednávání z burzy
- vložení jídla na burzu ✅
- zrušit vložení jídla na burzu ✅
- počet ➖
- Výdejny (jiné lokace) ➖

# SOŠ stavební a SOU stavební Kolín

- Login ✅
- Získej uživatele ❌
- kredit ❌
- jméno ❌
- Příjmení ❌
- Kategorie ❌
- Účet pro platby ❌
- Variabilní symbol ❌
- specifický symbol ❌
- Uživatelské jméno ❌
- Jídelníček pro den ✅
- správný počet jídel ✅
- jídlo ✅
- název ✅
- cena ✅
- varianta ✅
- objednáno ✅
- lze objednat ✅
- na burze ➖
- alergeny ➖
- kódy➖
- podrobnosti➖
- název➖
- rozdělení na kategorie ✅
- blokováno (vypršela platnost) ✅
- Jídelníček pro měsíc ❌
- Objednávání ✅
- funguje objednávání✅
- funguje zrušení✅
- Burza➖
- získání burzy➖
- Objednávání z burzy➖
- vložení jídla na burzu➖
- zrušit vložení jídla na burzu➖
- Výdejny (jiné lokace) ✅
80 changes: 77 additions & 3 deletions lib/src/canteen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ import 'package:html/parser.dart' as parser;
import 'package:html/dom.dart' as dom;

class Canteen {
/// Seznam chybějících funkcí pro danou verzi iCanteenu - funkce, které nejsou ve vanilla webové verzi iCanteenu nebo nejsou podporovány
List<Features> missingFeatures = [];

/// URL iCanteenu
String url;

Expand All @@ -43,6 +46,13 @@ class Canteen {
// Je uživatel přihlášen?
bool get prihlasen => canteenInstance?.prihlasen ?? false;

int get vydejna => canteenInstance?.vydejna ?? 1;
set vydejna(int value) {
if (canteenInstance != null) {
canteenInstance!.vydejna = value;
}
}

///zpracuje jídlo a rozdělí ho na kategorie (hlavní jídlo, polévka, salátový bar, pití...)
JidloKategorizovano parseJidlo(String jidlo) {
List<String> cistyListJidel = jidlo.split(',');
Expand All @@ -62,25 +72,42 @@ class Canteen {
List<String> salatoveBary = ['salát', 'kompot'];
List<String> piticka = [
'nápoj',
'napoj',
'čaj',
'caj',
'káva',
'kava',
'mošt',
'most',
'sirup',
'voda',
'mléko',
'mleko',
'vit. nápoj' /*vitamínový nápoj*/,
'vit.nápoj' /*vitamínový nápoj*/,
'džus',
'dzus',
'kakao',
];
List<String> ostatniVeci = [
'ovoce',
'pečivo',
'pecivo',
'chléb',
'chleb',
'rohlík',
'rohlik',
'tyčinka',
'tycinka',
'dezert',
'termix'
'šáteč' /*šáteček/šátečky */
'termix',
'tvarohá' /*Tvaroháček/Tvaroháčky*/,
'tvaroha' /*tvaroháček/tvaroháčky*/,
'šáteč' /*šáteček/šátečky */,
'satec' /*šáteček/šátečky */,
'šateč',
'šatec',
'sateč',
];

bool kategorie(String vec, List<String> kategorie) {
Expand Down Expand Up @@ -214,6 +241,9 @@ class Canteen {
case '2.19.13':
canteenInstance = Canteen2v19v13(url);
break;
case '2.10.27':
canteenInstance = Canteen2v10v27(url);
break;
default:
if (loginData == null) {
//pokud není loginData, tak se nemůže získat verze. Tudíž prostě zkusíme jednu verzi a je možné, že nebude fungovat...
Expand Down Expand Up @@ -242,14 +272,23 @@ class Canteen {
throw 'Nepodařilo se přihlásit do iCanteenu';
}
} catch (e) {
rethrow;
try {
canteenInstance = Canteen2v10v27(url);
await canteenInstance!.login(loginData.username, loginData.password);
if (!canteenInstance!.prihlasen) {
throw 'Nepodařilo se přihlásit do iCanteenu';
}
} catch (e) {
rethrow;
}
}
}
}
}
if (loginData != null && !canteenInstance!.prihlasen) {
await canteenInstance!.login(loginData.username, loginData.password);
}
missingFeatures = canteenInstance!.missingFeatures;
return canteenInstance!;
}

Expand Down Expand Up @@ -324,6 +363,10 @@ class Canteen {
if (canteenInstance != null) {
return canteenInstance!.ziskejJidelnicek();
}
if (canteenInstance!.missingFeatures.contains(Features.jidelnicekBezCen)) {
throw 'nepodporovaná funkce';
}

await _ziskatInstanciProVerzi();
return canteenInstance!.ziskejJidelnicek();
}
Expand All @@ -341,14 +384,36 @@ class Canteen {
if (canteenInstance == null) {
throw 'Nejdříve se musíte přihlásit';
}
if (canteenInstance!.missingFeatures.contains(Features.jidelnicekDen)) {
throw 'nepodporovaná funkce';
}
return canteenInstance!.jidelnicekDen(den: den);
}

/// Získá jídlo do konce měsíce od aktuálního dne
///
/// __Vyžaduje přihlášení pomocí [login]__
///
/// Výstup:
/// - list instancí [Jidelnicek] obsahující detaily, které vidí přihlášený uživatel
Future<List<Jidelnicek>> jidelnicekMesic() async {
if (canteenInstance == null) {
throw 'Nejdříve se musíte přihlásit';
}
if (canteenInstance!.missingFeatures.contains(Features.jidelnicekMesic)) {
throw 'nepodporovaná funkce';
}
return canteenInstance!.jidelnicekMesic();
}

/// Vrátí informace o uživateli ve formě instance [Uzivatel]
Future<Uzivatel> ziskejUzivatele() async {
if (canteenInstance == null) {
throw 'Nejdříve se musíte přihlásit';
}
if (canteenInstance!.missingFeatures.contains(Features.ziskatUzivatele)) {
throw 'nepodporovaná funkce';
}
return canteenInstance!.ziskejUzivatele();
}

Expand Down Expand Up @@ -377,6 +442,9 @@ class Canteen {
if (canteenInstance == null) {
throw 'Nejdříve se musíte přihlásit';
}
if (canteenInstance!.missingFeatures.contains(Features.burza)) {
throw 'nepodporovaná funkce';
}
return canteenInstance!.doBurzy(j, amount: amount);
}

Expand All @@ -388,6 +456,9 @@ class Canteen {
if (canteenInstance == null) {
throw 'Nejdříve se musíte přihlásit';
}
if (canteenInstance!.missingFeatures.contains(Features.burza)) {
throw 'nepodporovaná funkce';
}
return canteenInstance!.ziskatBurzu();
}

Expand All @@ -402,6 +473,9 @@ class Canteen {
if (canteenInstance == null) {
throw 'Nejdříve se musíte přihlásit';
}
if (canteenInstance!.missingFeatures.contains(Features.burza)) {
throw 'nepodporovaná funkce';
}
return canteenInstance!.objednatZBurzy(b);
}
}
Loading

0 comments on commit 02d57de

Please sign in to comment.