Aller au contenu principal

Plateformes

Une plateforme, telle que décrite précédemment, est définie grâce à la classe Platform exposée par le fichier JavaScript présent à l'adresse suivante :

https://obs.multistream.tools/v1/adapters.js
astuce

Ce fichier/module exporte également un certain nombre de constantes utiles à la modélisation des plateformes Facebook, Trovo, Twitch et YouTube.

API

La signature TypeScript de la classe Platform est la suivante :

type Id = string;

type Event = string;

type Alerts = Event[];

type Filters = {
alerts?: false;
chat?: false;
session?: true;
other?: true;
[key: Event]: false;
};

declare class Platform {
constructor(id: Id, alerts: Alerts, filters?: Filters, extraAlerts?: Alerts);
get id(): Id;
has(event: Event): boolean;
}

Paramètres

attention

Chaque paramètre listé ci-dessous n'est plus modifiable une fois la plateforme instanciée (lecture seule).

L'id d'une plateforme est un identifiant unique de type string correspondant généralement au nom de la plateforme en question ; écrit en minuscules par convention. Par exemple 'twitch' pour Twitch, 'youtube' pour YouTube, etc.

Les alerts d'une plateforme correspondent à la liste des événements de catégorie alerte que celle-ci supporte, désactivables par le biais de filters. Il s'agit d'un array dont chaque élément est de type string, correspondant au nom d'une alerte donnée ; écrit en minuscules par convention. Par exemple 'subscriber' pour un abonnement payant sur Twitch, 'sponsor' pour un abonnement payant sur YouTube, etc.

Le paramètre optionnel filters permet d'activer/désactiver certains événements normalement émis par la plateforme. C'est notamment utile lorsque vous modélisez une plateforme destinée à être réutilisée par d'autres développeurs, comme nous l'avons fait avec les plateformes pré-configurées listées ci-dessous. Il s'agit d'un object dont chaque propriété porte le nom de l'événement que l'on souhaite activer/désactiver et la valeur true ou false selon si cet événement est désactivé ou activé par défaut.

info

Les événements activables/désactivables correspondent aux alertes d'une plateforme mais également à des catégories entières d'événements : session, alerts, chat, et other. Les événements de catégorie load ne sont pas désactivables, ceux de catégorie session ou other sont désactivés par défaut. Ces catégories sont décrites sur la page dédiée aux adaptateurs.

import {
chat,
subscriber,
Platform,
Twitch
} from 'https://obs.multistream.tools/v1/adapters.js';

const customAlert = 'alert';

class CustomPlatform extends Platform {
constructor(...args) {
super('custom', [customAlert], ...args);
}
}

const customPlatform = new CustomPlatform({
[chat]: false,
[customAlert]: false
});

const twitchPlatform = new Twitch({
[chat]: false,
[subscriber]: false
});

Le paramètre optionnel extraAlerts permet d'ajouter des événements de catégorie alerte à la liste de ceux émis par la plateforme. C'est notamment utile lorsque vous modélisez une plateforme destinée à être réutilisée par d'autres développeurs, comme nous l'avons fait avec les plateformes pré-configurées listées ci-dessous. Il s'agit du même type de données que pour le paramètre alerts.

import {
Platform,
Twitch
} from 'https://obs.multistream.tools/v1/adapters.js';

const customAlert = 'alert';

const commonAlerts = ['alert1', 'alert2', 'alert3'];

class CustomPlatform extends Platform {
constructor(...args) {
super('custom', [customAlert], ...args);
}
}

const customPlatform = new CustomPlatform(undefined, commonAlerts);

const twitchPlatform = new Twitch(undefined, commonAlerts);

Propriétés

Il est possible de récupérer la valeur de l'id d'une plateforme après sa création. Pour ce faire, il suffit d'accéder à la propriété (getter), nommée tout bonnement id, présente sur une instance de la classe Plaftorm.

import {
twitch,
Platform,
Twitch
} from 'https://obs.multistream.tools/v1/adapters.js';

const customPlatformId = 'custom';

const customPlatform = new Platform(customPlatformId, ['alert']);

console.log(customPlatform.id === customPlatformId); // true

const twitchPlatform = new Twitch();

console.log(twitchPlatform.id === twitch); // true

Méthodes

Il est également possible de savoir si une plateforme donnée supporte un événement spécifique en faisant appel à la méthode nommée has présente sur une instance de la classe Plaftorm. Cette méthode renverra true si la plateforme en question est capable d'émettre l'événement souhaité ou false si ce n'est pas le cas (ce dernier n'est pas supporté ou a été désactivé grâce aux filters).

import {
alerts,
subscriber,
Platform,
Twitch
} from 'https://obs.multistream.tools/v1/adapters.js';

const customAlert = 'alert';

class CustomPlatform extends Platform {
constructor(...args) {
super('custom', [customAlert], ...args);
}
}

let customPlatform = new CustomPlatform();

console.log(customPlatform.has(alerts)); // true
console.log(customPlatform.has(customAlert)); // true
console.log(customPlatform.has(subscriber)); // false

customPlatform = new CustomPlatform({ [customAlert]: false }, [subscriber]);

console.log(customPlatform.has(alerts)); // true
console.log(customPlatform.has(customAlert)); // false
console.log(customPlatform.has(subscriber)); // true

customPlatform = new CustomPlatform({ [alerts]: false }, [subscriber]);

console.log(customPlatform.has(alerts)); // false
console.log(customPlatform.has(customAlert)); // false
console.log(customPlatform.has(subscriber)); // false

let twitchPlatform = new Twitch();

console.log(twitchPlatform.has(alerts)); // true
console.log(twitchPlatform.has(subscriber)); // true
console.log(twitchPlatform.has(customAlert)); // false

twitchPlatform = new Twitch({ [subscriber]: false }, [customAlert]);

console.log(twitchPlatform.has(alerts)); // true
console.log(twitchPlatform.has(subscriber)); // false
console.log(twitchPlatform.has(customAlert)); // true

twitchPlatform = new Twitch({ [alerts]: false }, [customAlert]);

console.log(twitchPlatform.has(alerts)); // false
console.log(twitchPlatform.has(subscriber)); // false
console.log(twitchPlatform.has(customAlert)); // false

Plateformes pré-configurées

Nous fournissons les plateformes suivantes, exposées par le même fichier JavaScript cité tout au long de cette page, pour vous éviter de les modéliser vous-même.

classeidevents
Facebook'facebook''follower', 'fan', 'videolike', 'supporter', 'share', 'stars'
Trovo'trovo''subscriber', 'elixir', 'follower', 'raid'
Twitch'twitch''subscriber', 'cheer', 'follower', 'raid', 'reward' (points de chaîne)
YouTube'youtube''sponsor', 'superchat', 'subscriber'

Leurs signatures TypeScript sont les suivantes :

declare class Facebook extends Platform {
constructor(filters?: Filters, extraAlerts?: Alerts);
}

declare class Trovo extends Platform {
constructor(filters?: Filters, extraAlerts?: Alerts);
}

declare class Twitch extends Platform {
constructor(filters?: Filters, extraAlerts?: Alerts);
}

declare class YouTube extends Platform {
constructor(filters?: Filters, extraAlerts?: Alerts);
}