Échange de données 1

Développer un service web pour répondre aux besoins d'une page web existante et fournir des fonctionnalités complémentaires via un client en ligne de commande.

Taskor

Créer l'application serveur qui supporte les fonctionnalités de ce client web.

  • Créer la route qui permet d'accéder au client web
  • Implémenter les fonctionnalités CUDL pour les tâches

    • Les mutations, CUD, retournent une string vide lors d'une opération qui a fonctionnée, sinon le message d'erreur
    • Les tâches sont enregistrées dans un fichier en format JSON correctement typé
  • Lors de la création d'une tâche, son id est assigné par le serveur

    require "securerandom"
    p Random.uuid

  • Lors de la mise à jour du status d'une tâche, le serveur reçoit un booléen indiquant si la tâche est complétée ou non. C'est le serveur qui assigne ensuite nil si faux, sinon la date-heure actuelle.

    require "date"
    p DateTime.now.to_s

  • Assurez-vous d'insérer des données de tests cohérentes lorsque le fichier est vide

API

http
Affichage du client web
GET / HTTP/1.1

===

...Fichier taskor.html...
http
Liste des tâches
GET /tasks HTTP/1.1

=== Toutes les tâches, telles que dans le fichier

[
{ id: "...", name: "...", completed_at: null | "yyyy-mm-ddThh:mm:ss-0z:00" },
...
]
http
Créer une tâche, une tâche n'est PAS complétée par défaut
POST /new-task HTTP/1.1

{ name: "..." }

===

""

~~~ Si erreur de validation

"Message d'erreur"
http
Compléter ou non une tâche
POST /set-completed HTTP/1.1

{ id: "...", completed: true | false }

===

""

~~~ Si erreur de validation

"Message d'erreur"
http
Mettre à jour le nom
POST /update-name HTTP/1.1

{ id: ..., name: "..." }

===

""

~~~ Si erreur de validation

"Message d'erreur"
http
Supprimer une tâche
POST /remove-task HTTP/1.1

{ id: ... }

===

""

~~~ Si erreur de validation

"Message d'erreur"

Client

Le client offre une interface console minimale pour permettre de manipuler les données via les routes existantes.

  • Liste des tâches supporte plusieurs paramètres d'URL optionnels pour ajuster les items affichés

    • sort trie par le nom en ordre croissant, asc, ou décroissant, desc
    • name filtre les tâches dont le nom contient le critère fourni
    • status affiche seulement les tâches non-complétées, pending, ou complétées, done
http
GET /tasks?sort=...asc|desc...&name=...critère...&status=...pending|done... HTTP/1.1

===

[
...
]

~~~ Si erreur de validation

"Message d'erreur"
  • Le client console doit également offrir l'accès à au moins une autre opération à votre choix(ajout, changement de statut, modification du nom ou suppression)

Exemple d'exécution

Paramètres vides: si les paramètres sont vides, ils ne sont pas envoyés
Taskor
------

Liste ou Ajout (L, A): L

Tri:
Recherche:
Status:

[ ] Nom A
[x] Nom B yyyy-mm-ddThh:mm:ss-0z:00
...
Validations
Taskor
------

Liste ou Ajout (L, A): L

Tri: patate
Recherche:
Status:

tri invalide, asc ou desc



Taskor
------

Liste ou Ajout (L, A): L

Tri: patate
Recherche:
Status: coucou

tri invalide, asc ou desc
status invalide, pending ou done
Paramètres
Taskor
------

Liste ou Ajout (L, A): L

Tri: desc
Recherche: ruby
Status: pending

...Seulement les tâches correspondantes...
Supplément, ex: Ajout
Taskor
------

Liste ou Ajout (L, A): A

Nom: Tâche C

Ajout réussis



Taskor
------

Liste ou Ajout (L, A): A

Nom:

Nom requis

Remise

21 octobre, 8h AM via LÉA

  • Envoyer un fichier ZIP, contenant uniquement vos fichiers Ruby nommés server.rb et client.rb
  • Inscrire votre nom en commentaire sur la première ligne

Échange de données 1

Nom:

Qualité: ZIP, Nomenclature, Formatage, Syntaxe 0     -0.5     -1     -2
Serveur
GET /, fichier html 1     0.5     0
GET /tasks, toutes les tâches, données complètes, données de test 2     1.5     1     0
Paramètres optionnels sort, name, status, réponse 2     1.5     1     0
POST /new-task, body json, validations, réponse, persistence 2     1.5     1     0
POST /set-completed, body json, validations, réponse, persistence 2     1.5     1     0
POST /update-name, body json, validations, réponse, persistence 2     1.5     1     0
POST /remove-task, body json, validations, réponse, persistence 2     1.5     1     0
Client
Menu liste, supplément 1     0.5     0
Liste saisie tri, recherche, status, affichage résultat 2     1.5     1     0
Requête Liste route, paramètres url 2     1.5     1     0
Supplément saisie, affichage résultat 2     1.5     1     0
Requête Supplément route, paramètres json 2     1.5     1     0
UI/UX cohérent 0     -0.5     -1