GIFs Tenor

Cette section détaille l'intégration avec l'API Tenor permettant aux utilisateurs de rechercher et d'envoyer des GIFs dans les canaux de chat.

TenorService (tenor.service.ts)

Service qui communique avec l'API Tenor v2 pour récupérer des GIFs.

Propriétés

Méthodes

async searchGifs(query: string, limit: number = 20): Promise<TenorGif[]>

Description : Recherche des GIFs selon un terme de recherche.
Paramètres :

API Call :

GET https://tenor.googleapis.com/v2/search
?q={query}
&key={apiKey}
&limit={limit}
&media_filter=gif

Retour : Promise<TenorGif[]>

Structure TenorGif :

{
    id: string,
    title: string,
    media_formats: {
        gif: {
            url: string,
            dims: [width, height],
            size: number
        },
        tinygif: { ... },
        nanogif: { ... }
    },
    created: number,
    content_description: string,
    itemurl: string,
    url: string
}

Description : Récupère les GIFs en vedette (trending).
Paramètres :

API Call :

GET https://tenor.googleapis.com/v2/featured
?key={apiKey}
&limit={limit}
&media_filter=gif

Retour : Promise<TenorGif[]>

TenorController (tenor.controller.ts)

Contrôleur REST pour les endpoints Tenor.

Endpoints

GET /api/tenor/search?q=query&limit=20

Description : Recherche des GIFs.
Query params :

Validation :

Réponse :

{
    gifs: TenorGif[]
}

Status codes :

Description : Récupère les GIFs en vedette.
Query params :

Validation :

Réponse :

{
    gifs: TenorGif[]
}

Status codes :

Configuration

Variable d'environnement

TENOR_API_KEY=your_tenor_api_key_here

Obtention de la clé :

  1. Créer un compte sur Tenor
  2. Créer une application
  3. Copier la clé API

Configuration dans env.ts

export const TENOR_API_KEY = process.env.TENOR_API_KEY || '';

Intégration avec le Chat

Envoi de GIF dans un message

  1. Client recherche GIF via /api/tenor/search
  2. Client sélectionne un GIF
  3. Client envoie message avec URL du GIF :
    socket.emit('chat:send-message', {
        channelId: '...',
        content: 'https://media.tenor.com/...'
    })
    
  4. Serveur stocke le message avec l'URL
  5. Serveur diffuse le message aux participants du canal
  6. Client détecte l'URL et affiche le GIF

Format du message

Les messages contenant des GIFs sont stockés comme des messages normaux avec l'URL dans le champ content.

Exemple de message :

{
    _id: ObjectId('...'),
    author: 'firebase_uid_123',
    content: 'https://media.tenor.com/xyz/image.gif',
    creationDate: Date('2025-12-01T12:00:00Z')
}

Le client est responsable de détecter les URLs Tenor et d'afficher les GIFs de manière appropriée.

Limites et quotas

Limites de l'API Tenor

Limites imposées par le serveur

Gestion d'erreurs

Erreurs API Tenor

Si l'API Tenor retourne une erreur :

Erreurs de validation

Sécurité

Authentification

Protection de la clé API

Validation des URLs

Performance

Caching

Actuellement, aucun cache n'est implémenté. Les requêtes sont transmises directement à l'API Tenor.

Améliorations possibles