Skip to content

thevajko/cv-09-10

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VAII Cvičenie 09

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

Úloha na cvičenie 9

Cieľom tohto cvičenia je vytvoriť webové API k serverovej časti chatovacej aplikácie s použitím frameworku vajiíčko. API sa bude skladať z dvoch častí:

  1. AuthApiController - má na starosti operácie týkajúce sa výlučne používateľa a informácií o ňom. Bude obsahovať nasledovné akcie:
    1. index - keďže sa jedná o API, index bude vracať HTTP kód 501 Not Implemented
    2. login - login bude očakávať odoslanie prihlasovacích údajov v JSON objekte s dvomi atribútmi login a password. V prípade ak ich objekt nebude obsahovať alebo budú mať prázdnu hodnotu vracia HTTP kód 400 Bad Request. Ak sa podarí prihlásenie vytvorí sa nový záznam model Login s aktuálnym časom. Ak už prihlásenie existuje upraví sa jeho last_action. Pri úspešnom prebehnutí loginu sa vracia klientovi empty response.
    3. logout - skontroluje, či je používateľ prihlásený, ak áno odhlási ho a zmaže záznam o logine s tabuľky logins. Ak nie, nič neurobí. Na konci vždy vrácia klientovi empty response.
    4. status - Ak je používateľ prihlásený klient dostane JSON odpoveď s objektom, ktorý ma iba jeden atribút login a obsahuje login aktuálne prihláseného používateľa. Neprihlásenému používateľovi vráti HTTP kód 401 Unauthorized.
    5. activeUsers - Ak je používateľ prihlásený klient dostane JSON odpoveď v podobe poľa objektov typu Login používateľov, ktorý sú aktívny. Ako aktívny používateľ je každý používateľ po dobu 30 sekúnd od posledného dopytu na získanie správ, pokiaľ žiadnych aktívnych používateľov nenájde vracia prázdne pole. Ak je používateľ neprihlásený vracia HTTP kód 401 Unauthorized.
  2. MessageApiController - poskytuje API pre odosielanie a získavanie správ. Všetky akcie tohto kontrolera sú iba pre prihlásených používateľov.
    1. index - keďže sa jedná o API, index bude vracať HTTP kód 501 Not Implemented
    2. sendMessage - očakáva odoslanie potrebných dát v JSON objekte s dvoma povinnými atribútmi: recipient a message. Ak ich objekt neobsahuje klientovi sa zašle HTTP odpoveď 400 Bad Request. Ďalej platí:
      • recipient obsahuje null ak správa nie je privátna. Ak je 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 Bad Request
      • Ak sa správa uloží klientovi sa zašle empty response.
    3. getMessages - vráti vždy posledných maximálne 30 správ. Klientovi sa posielajú správy, ktorá odoslal, verejné správy a jemu poslané privátne správy. Metóde sa môže zaslať atribút lastId, ktorý zašle klientovi jemu prístupné správy od daného Id. API teda umožňuje prebrať aj neskoršie správy.

Nakoľko náležitostí, ktoré je potrebne kontrolovať je veľa, pridali sme k tomuto projektu HTTP testy. Tie sa nachádzajú v <root>/test/Tests.http. Pár poznámok:

  • Testy needitujte.
  • Vytvorte API tak, aby všetky testy boli úspešne.
  • Jednotlivé HTTP dopyty sa dajú púšťať jednotlivo ale je potrebné chápať s akým kontextom pracujú.

Docker

Framework ma v adresári <root>/docker základnú konfiguráciu pre spustenie a debug web aplikácie. Všetky potrebné služby sú v docker-compose.yml. Po ich spustení sa vytvorí:

  • WWW document root je nastavený adresár riešenia, čiže web bude dostupný na adrese http://localhost/. Server má pridaný modul pre ladenie móde" (xdebug.start_with_request=yes).
  • webový server beží na PHP 8.2 s Xdebug 3 nastavený na port 9003 v "auto-štart" móde
  • PHP ma doinštalované rozšírenie PDO
  • databázový server s vytvorenou databázou a tabuľkami messages a users na porte 3306 a bude dostupný na localhost:3306. Prihlasovacie údaje sú:
    • MYSQL_ROOT_PASSWORD: db_user_pass
    • MYSQL_DATABASE: databaza
    • MYSQL_USER: db_user
    • MYSQL_PASSWORD: db_user_pass
  • phpmyadmin server, ktorý sa automatický nastavený na databázový server na porte 8080 a bude dostupný na adrese http://localhost:8080/

About

Jednoduchý PHP MVC framework

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 99.9%
  • CSS 0.1%