Skip to content
This repository was archived by the owner on Sep 18, 2026. It is now read-only.

Protocole de communication

Hugo VDBM edited this page May 8, 2022 · 36 revisions

Interfaces globales

interface Message<T> {
  event: string;
  data: T;
}

interface ResponseStatus {
  success: boolean;
  status: string;
}

Modules de l'application

Connexion de l'utilisateur

Lors de la la connexion, le client doit communiquer au serveur son identité, par le biais de la connexion WebSocket établie. Pour ce faire, il doit envoyer un message du type ci-dessous. Tout autre message sera ignoré tant que cette information ne sera pas donnée.

Une fois connecté, l'utilisateur émet un message ping toute les 30s pour conserver son WebSocket avec le serveur.

Event Request parameters Response Description
CLIENT-authenticate
  • idToken: string
  • response: ResponseStatus
Identifie l'utilisateur auprès du serveur. En cas de succès, l'uid de l'utilisateur est renvoyé dans le statut de la réponse.
CLIENT-ping
  • data: string
Maintient la connexion WebSocket avec le serveur.

Informations des utilisateurs

Interface

interface User {
    uid: string;
    email: string;
    displayName: string;
    photoURL: string;
    roles: string[];
    description: string;
    // isAuthorized: [boolean, boolean];
    // timestamp: firebase.firestore.FieldValue;
}

isAuthorized et timestamp sont des propriétés de Matbay-Legacy et ne seront plus supportées dans Matbay-Yatga:Kalimba. Le niveau d'autorisation d'un utilisateur sera maintenant déterminé par ses rôles et l'utilisation d'un timestamp pour gérer le nombre d'édition du profil n'est plus nécessaire.

Requêtes WS

Event Request parameters Response Subscribe Response Description
USER-get
  • uids: string[]
    (USER-update)
  • userInfo: User
Récupère les données de tous les utilisteurs dont les uids sont spécifiés
USER-get-all
    (USER-update)
  • userInfo: User
Récupère les données de tous les utilisateurs
USER-edit
  • userData: User
Modifie les données de l'utilisateur spécifié.
USER-create
  • userData: User
Crée un nouvel utilisateur à partir des données passées.
USER-unsubscribe
  • uids: string[]
Stoppe les mises à jours pour les utilisateurs dont les uids sont spécifiés.

Informations des constitutions

Interface

interface Constitution {
  id: string;
  season: number;
  part: number;
  name: string;
  isPublic: boolean;
  anonymousLevel: number;  // enum AnonymousLevel (0: rien | 1: le nom des utilisateurs | 2: tout sauf le son)
  type: number;            // enum ConstitutionType
  state: number;
  playlistLink: string;

  users: string[];      // user[0] est le président
  maxUserCount: number;
  numberOfSongsPerUser: number;
}

Les votes et les chansons seront disponible à partir de collection à part (respectivement votes et songs), se situant sur le même chemin que la constitution sur Firebase. Contrairement à Matbay-Legacy, on ne stocke plus le gagnant et la chanson gagnante.

Requêtes WS

Event Request parameters Response Subscribe Response Description
CST-get
  • ids: string[]
    (CST-update)
  • cstInfo: Constitution
Récupère les données de tous les constitutions dont les ids sont spécifiés
CST-get-from-user
    (CST-update)
  • cstInfo: Constitution
Récupère toutes les constitutions auxquelles l'utilisateur utilisateur a accès
CST-create
  • cstData: Constitution
    (CST-update)
  • cstInfo: Constitution
Crée une nouvelle constitution à partir des données passées.
CST-join
  • id: string
Ajoute l'utilisateur à la liste des utilisateurs de la constitution
CST-state
  • id: string
  • state: number
    (CST-update)
  • cstInfo: Constitution
Modifie l'état de la constitution. Seul le président peut apporter une modification
CST-NameURL
  • id: string
  • name: string | undefined
  • url: string | undefined
    (CST-update)
  • cstInfo: Constitution
Modifie le nom et/ou l'URL de la playlist de la constitution. Seul le président peut apporter une modification
CST-unsubscribe
  • ids: string[]
Stoppe les mises à jours pour les constitutions dont les ids sont spécifiés.

Informations des chansons

Les chansons sont stockés dans une sous-collection d'une constitution.

Interface

interface Song {
    id: number
    title: string;     // shortTitle sur Matbay-Legacy
    platform: number;  // enum SongPlatform
    url: string;
    user: string;      // patron sur Matbay-Legacy
    author: string;
}

Requêtes WS

Event Request parameters Response Subscribe Response Description
CST-SONG-add
  • cstId: string
  • songData: Song
  • result: ResponseStatus
Ajoute une chanson dans une constitution. Une réponse donnera si la requête est un succès ou non.
CST-SONG-remove
  • cstId: string
  • songID: number
  • result: ResponseStatus
Supprime une chanson dans une constitution. L'utilisateur peut seulement supprimer ses propres chansons. Une réponse donnera si la requête est un succès ou non.
CST-SONG-get-all
  • cstId: string
  • songInfo: Song
Abonne l'utilisateur aux chansons d'une constitution. Il doit être membre de la constitution.
CST-SONG-unsubscribe
  • cstId: string
Supprime les mises à jours des chansons de la constitution demandée.

Modération

Requêtes WS

Event Request parameters Response Subscribe Response Description
MOD-kick
  • uid: string
  • cstId: string
  • result: ResponseStatus
Supprime toutes les informations d'un utilisateur dans une constitution
MOD-neutralize
  • uid: string
  • cstId: string
  • result: ResponseStatus
Ajoute/Modifie tous les votes d'un utilisateur à 5
MOD-clone
  • cstId: string
  • result: ResponseStatus
Clone une constitution en entier

Clone this wiki locally