Skip to content

thevajko/cv-09

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published