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.