Clientul
Clientul va trebui să interpreteze comenzi de la tastatură pentru a putea interacţiona cu serverul. În urma primirii unei comenzi, clientul va forma obiectul json (dacă e cazul), va executa cererea către server şi va afişa răspunsul acestuia (de succes sau de eroare). Procesul se repetă până la introducerea comenzii exit.
‼️ Atât comenzile cât şi câmpurile împreună cu valorile aferente se scriu pe linii separate!
‼️ Conexiunea la server trebuie realizata DOAR cu API-ului de sockets! (ca in laboratorul de HTTP)
Datele introduse de către utilizator de la tastatura sunt cele marcate cu text astfel!
Listă comenzi
- login_admin - efectuează autentificarea pentru admin (doar admin)
- add_user - adaugă un nou utilizator normal (doar admin)
- get_users - cere toti utilizatorii de pe server (doar admin)
- delete_user - șterge un utilizator normal (doar admin)
- logout_admin - efectuează delogarea pentru admin (doar admin)
- login - efectuează autentificarea pentru utilizator normal
- get_access - cere acces pentru colectia de filme
- get_movies - cere toate filmele de pe server
- get_movie - cere informaţie despre un film
- add_movie - adaugă un film
- delete_movie - șterge un film
- update_movie - actualizeaza datele unui film
- get_collections - cere toate colecțiile de filme de pe server
- get_collection - cere informaţie despre o colecție de filme
- add_collection - adaugă o colecție de filme
- delete_collection - șterge o colecție de filme
- add_movie_to_collection - adaugă un film intr-o colecție
- delete_movie_from_collection - șterge un film dintr-o colecție
- logout - efectueaza delogarea utilizatorului
- exit - efectueaza ieșirea din program
Observație
‼️ Textul mesajelor returnate de server sunt alese de voi, însă trebuie să țineți cont de următoarele convenții:
- dacă rezultatul HTTP a fost un cod de eroare, mesajul să conțină cuvantul ERROR
- dacă operațiunea a avut loc cu succes, atunci să conțină cuvantul SUCCESS
‼️ Punctajele pentru fiecare comanda sunt raportate la 100p. De exemplu, comanda get_users valoreaza 10p/100p.
Comenzi
1. Login_admin (2.5p)
Oferă prompt pentru username și password.
login_admin
username=something
password=something
Input
login_admin
username=something
password=something
Output
SUCCESS: Admin autentificat cu succes
2. Add_user (5p)
Oferă prompt pentru username și password.
add_user
username=something
password=something
Input
add_user
username=test
password=test
Output
SUCCESS: Utilizator adăugat cu succes
3. Get_users (10p)
Nu necesită parametri.
get_users
Input
get_users
Output
SUCCESS: Lista utilizatorilor
#1 test:test
#2 john:doe
4. Delete_user (5p)
Oferă prompt pentru username.
delete_user
username=something
Input
delete_user
username=test
Output
SUCCESS: Utilizator șters
5. Login (2.5p)
Oferă prompt pentru admin_username, username și password.
login
admin_username=admin
username=test
password=test
Input
login
admin_username=admin
username=test
password=test
Output
SUCCESS: Autentificare reușită
6. Get_access (10p)
Nu necesită parametri.
get_access
Input
get_access
Output
SUCCESS: Token JWT primit
7. Get_movies (10p)
Nu necesită parametri.
get_movies
Input
get_movies
Output
SUCCESS: Lista filmelor
#1 The Dark Knight
#2 Snow White
8. Get_movie (5p)
Oferă prompt pentru id.
get_movie
id=10
Input
get_movie
id=10
Output
SUCCESS: Detalii film
title: The Dark Knight
year: 2010
description: sci-fi
rating: 8.8
9. Add_movie (5p)
Oferă prompt pentru title, year, description, rating.
add_movie
title=Inception
year=2010
description=sci-fi
rating=8.8
Input
add_movie
title=Inception
year=2010
description=sci-fi
rating=8.8
Output
SUCCESS: Film adăugat
10. Delete_movie (5p)
Oferă prompt pentru id.
delete_movie
id=10
Input
delete_movie
id=10
Output
SUCCESS: Film șters cu succes
11. Update_movie (2.5p)
Oferă prompt pentru id și câmpurile de actualizat.
update_movie
id=2
title=New Title
year=2009
description=sci-fi
rating=10.0
Input
update_movie
id=2
title=New Title
year=2009
description=sci-fi
rating=10.0
Output
SUCCESS: Film actualizat
12. Get_collections (10p)
Nu necesită parametri.
get_collections
Input
get_collections
Output
SUCCESS: Lista colecțiilor
#1: Colectie A
#2: Colectie B
13. Get_collection (5p)
Oferă prompt pentru id.
get_collection
id=10
Input
get_collection
id=10
Output
SUCCESS: Detalii colecție
title: Favorite Movies
owner: test_user
#3: Inception
#5: Interstellar
14. Add_collection (5p)
Oferă prompt pentru title, num_movies și movie_id pentru fiecare film.
add_collection
title=Must See
num_movies=2
movie_id=1
movie_id=3
Input
add_collection
title=Must See
num_movies=2
movie_id[0]=1
movie_id[1]=3
Output
SUCCESS: Colecție adăugată
15. Delete_collection (5p)
Oferă prompt pentru id.
delete_collection
id=10
Input
delete_collection
id=10
Output
SUCCESS: Colecție ștearsă
16. Add_movie_to_collection (2.5p)
Oferă prompt pentru id.
add_movie_to_collection
collection_id10
movie_id3
Input
add_movie_to_collection
collection_id=10
movie_id=3
Output
SUCCESS: Film adăugat în colecție
17. Delete_movie_from_collection (2.5p)
Oferă prompt pentru id.
delete_movie_from_collection
collection_id=10
movie_id=3
Input
delete_movie_from_collection
collection_id=10
movie_id=3
Output
SUCCESS: Film șters din colecție
18. Logout_admin (2.5p)
logout_admin
Input
logout_admin
Output
SUCCESS: Admin delogat
19. Logout (2.5p)
logout
Input
logout
Output
SUCCESS: Utilizator delogat
20. Exit (2.5p)
exit
Input
exit
Output
Programul se închide fără afișarea unui mesaj.