Skip to content

Latest commit

 

History

History
77 lines (56 loc) · 5.63 KB

README.md

File metadata and controls

77 lines (56 loc) · 5.63 KB

VAII Cvičenie 09

Momentálne je otvorená vetva MAIN, ktorá obsahuje štartér. Riešenie obsahuje vetva SOLUTION.

Úlohy na cvičenie

Ako funguje https protokol?

  1. Otvorte si Web developer tool a prepnite sa na kartu Sieť.
  2. Načítajte ľubovoľný web z internetu a pozrite si, ako vyzerá komunikácia medzi prehliadačom a web serverom.
  3. Akú verziu protokolu a aké metódy najčastejšie používajú? Čo všetko vieme z tejto komunikácie zistiť?

Jednoduchá práca s JSON vo frameworku Vaííčko

  1. Vytvorte metódu showJson() v kontroléri HomeController. Metóda vytvorí jednu správu (model Message) a zobrazí ju vo formáte JSON.
  2. Preštudujte si pohľad sendJson.view.php. Čo robí?
  3. Vytvorte metódu receiveJson() v kontroléri HomeController. Metóda príjme JSON data správy a pošle ich späť.

Tvorba API pre chat aplikáciu

Cieľom tohto cvičenia je vytvoriť webové API k serverovej časti čet aplikácie s použitím frameworku vajiíčko. Samotný čet budeme vytvárať na ďalšom cvičení.

Preštudujte si súbory v štartéri. Štartér obsahuje Vaííčko framework. V adresári docker\sql sa nachádza súbor ddl.sql, ktorý Vám vytvorí DB tabuľky, potrebné pre tento projekt a naplní DB niekoľkými záznamami. Projekt obsahuje aj SimpleAuthenticator na jednoduché overenie mena a hesla. V projekte sa nachádzajú aj pripravené kontroléry AuthApiController a MessageApiController. V nich budete implementovať jednotlivé akcie. V projekte nájdeme tiež modely Login a Message, ktoré zodpovedajú tabuľkám v DB. Všimnite si implementáciu metód isActive() a getAllActive() v triede Login. Nakoniec si prezrite aj testy v súbore \test\Tests.http. Skúste ich spustiť. Úlohou cvičenia bude implementovať metódy kontrolérov tak, aby všetky testy prebehli úspešne.

  1. AuthApiController - Má na starosti operácie týkajúce sa používateľa a vracia informácie o ňom. Obsahuje tieto už implementované akcie:

    • index - Keďže ide o API, akcia index bude vracať HTTP kód 501 Not Implemented.
    • login - Akcia prihlasovacie údaje v JSON objekte s dvomi atribútmi login a password. V prípade, ak ich objekt neobsahuje, alebo budú mať prázdnu hodnotu, vráti HTTP kód 400 Bad Request. Ak sa podarí prihlásenie, vytvorí sa nový model Login s aktuálnym časom. Ak už prihlásenie existuje, upraví sa jeho atribút last_action. Po úspešnom overení používateľa sa vráti klientovi prázdna odpoveď (empty response).

    Je potrebné vytvoriť tieto akcie:

    • logout - Skontroluje, či je používateľ prihlásený. Ak áno, odhlási ho a zmaže záznam o jeho logine z DB. Ak nie je prihlásený, neurobí nič. Na konci vždy vráti klientovi empty response.
    • status - Ak je používateľ prihlásený, klient dostane JSON odpoveď s objektom, ktorý obsahuje atribút login a má hodnotu aktuálne mena prihláseného používateľa. Neprihlásenému používateľovi vráti HTTP kód 401 Unauthorized.
    • activeUsers - Ak je používateľ prihlásený, klient dostane JSON odpoveď v podobe poľa objektov typu Login používateľov, ktorí sú aktívni. Aktívny používateľ je každý používateľ po dobu 30 sekúnd od poslednej žiadosti o získanie správ. Pokiaľ žiadnych aktívnych používateľov nenájde, vráti prázdne pole. Ak je používateľ neprihlásený, vráti HTTP kód 401 Unauthorized.
  2. MessageApiController - Poskytuje API pre odosielanie a získavanie správ. Všetky akcie tohto kontroléra sú určené iba pre prihlásených používateľov. Obsahuje tieto už implementované akcie:

    • index - Keďže sa jedná o API, index bude vracať HTTP kód 501 Not Implemented.
    • sendMessage - Očakáva odoslanie správy s dvoma povinnými atribútmi: recipient a message. Ak ich objekt neobsahuje, klientovi sa zašle HTTP odpoveď 400 Bad Request. Ďalšie podrobnosti:
      • Atribút recipient obsahuje null, ak je správa verejná. Ak je správa privátna, tento atribút obsahuje login používateľa, komu je určená.
      • Atribút message nesmie obsahovať prázdnu hodnotu.
      • Ak atribút recipient obsahuje hodnotu a daný používateľ nie je aktívny, klientovi sa zašle HTTP odpoveď 400 The recipient is not available.
      • Po uložení správy na serveri, sa klientovi zašle empty response.

    Je potrebné vytvoriť túto akciu:

    • getMessages - Získa všetky správy. Pošlú sa správy, ktoré používateľ odoslal, verejné správy a jemu poslané privátne správy. Metóda môže prijať parameter lastId, ktorý klientovi zašle správy od zadaného id.

Pár poznámok k testom:

  • Testy needitujte.
  • Vytvorte API tak, aby všetky testy prebehli úspešne.
  • Jednotlivé HTTP dopyty sa dajú púšťať jednotlivo, niektoré sú závislé ne iných testoch, preto nemusia byť úspešné.

Ako nájdem vetvu môjho cvičenia?

Pokiaľ sa chcete dostať k riešeniu z cvičenia je potrebné otvoriť si príslušnú vetvu, ktorej názov sa skladá:

MIESTNOST + "-" + HODINA ZAČIATKU + "-" + DEN

Ak teda navštevujete cvičenie pondelok o 08:00 v RA323, tak sa vaša vetva bude volať: RA323-08-PON

Použitý framework

Cvičenie používa framework vaííčko dostupný v repozitári https://github.com/thevajko/vaiicko. Pre úspešné riešenie projektu je potrebné spustiť docker konfiguráciu zo súboru docker\docker-compose.yml.