Class WebhookHandlerBase
- Espace de noms
- SESARWebHook.Core
Classe de base pour les webhook handlers. Fournit des helpers pour accéder aux données du manifest et à la configuration.
UTILISATION :
- Héritez de cette classe
- Implémentez HandlerId, DisplayName, et ProcessAsync
- Utilisez les helpers d'auth dans Core.Auth
EXEMPLE COMPLET :
using SESARWebHook.Core;
using SESARWebHook.Core.Auth;
using SESARWebHook.Core.Models;
public class MyDynamicsHandler : WebhookHandlerBase
{
private OAuth2ClientCredentialsHelper _auth;
public override string HandlerId => "my-dynamics";
public override string DisplayName => "My Dynamics 365 Handler";
public override void Initialize(Dictionary<string, string> settings)
{
base.Initialize(settings);
// Créer le helper d'auth avec vos paramètres
_auth = OAuth2ClientCredentialsHelper.ForDynamics365(
tenantId: GetRequiredSetting("TenantId"),
clientId: GetRequiredSetting("ClientId"),
clientSecret: GetRequiredSetting("ClientSecret"),
dynamicsUrl: GetRequiredSetting("DynamicsUrl")
);
}
public override async Task<IntegrationResult> ProcessAsync(
StoreManifest manifest,
WebhookContext context)
{
// Extraire les données avec les helpers
var email = GetSenderEmail(manifest);
var subject = GetSubject(manifest);
// Obtenir un token (auto-refresh géré par le helper)
var token = await _auth.GetAccessTokenAsync();
// Faire votre appel API
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", token);
var payload = new {
emailaddress1 = email,
subject = subject,
description = $"From SESAR: {context.RequestId}"
};
var response = await client.PostAsync(
$"{GetRequiredSetting("DynamicsUrl")}/api/data/v9.2/contacts",
new StringContent(
JsonConvert.SerializeObject(payload),
Encoding.UTF8,
"application/json"));
if (response.IsSuccessStatusCode)
{
return IntegrationResult.Ok("Contact created", HandlerId);
}
else
{
var error = await response.Content.ReadAsStringAsync();
return IntegrationResult.Fail("API error", error, HandlerId);
}
}
}
}
public abstract class WebhookHandlerBase : IWebhookHandler
- Héritage
-
WebhookHandlerBase
- Implements
- Membres hérités
Properties
Description
Description de ce que fait ce handler
public virtual string Description { get; }
Valeur de la propriété
DisplayName
Nom affiché dans les logs et interfaces d'admin
public abstract string DisplayName { get; }
Valeur de la propriété
HandlerId
Identifiant unique de ce handler (ex: "my-company-crm") Utilisé dans la configuration et le routage.
public abstract string HandlerId { get; }
Valeur de la propriété
Settings
Configuration chargée depuis Web.config et connectors.secrets.json
protected Dictionary<string, string> Settings { get; }
Valeur de la propriété
Version
Version du handler
public virtual string Version { get; }
Valeur de la propriété
Methods
DecodeBase64(string)
Décode une chaîne Base64 en texte UTF-8.
protected string DecodeBase64(string base64)
Paramètres
base64string
Retour
GetFileCount(StoreManifest)
Récupère le nombre de fichiers dans le manifest.
protected int GetFileCount(StoreManifest manifest)
Paramètres
manifestStoreManifest
Retour
GetRecipientEmails(StoreManifest)
Récupère la liste des emails des destinataires.
protected List<string> GetRecipientEmails(StoreManifest manifest)
Paramètres
manifestStoreManifest
Retour
GetRequiredSetting(string)
Récupère un paramètre de configuration obligatoire. Lève une exception si non trouvé.
protected string GetRequiredSetting(string key)
Paramètres
keystring
Retour
GetSenderEmail(StoreManifest)
Récupère l'email de l'expéditeur depuis le manifest.
protected string GetSenderEmail(StoreManifest manifest)
Paramètres
manifestStoreManifest
Retour
GetSetting(string)
Récupère un paramètre de configuration. Retourne null si non trouvé.
protected string GetSetting(string key)
Paramètres
keystring
Retour
GetSetting(string, string)
Récupère un paramètre de configuration avec valeur par défaut.
protected string GetSetting(string key, string defaultValue)
Paramètres
Retour
GetSettingBool(string, bool)
Récupère un paramètre booléen.
protected bool GetSettingBool(string key, bool defaultValue = false)
Paramètres
Retour
GetSettingInt(string, int)
Récupère un paramètre entier.
protected int GetSettingInt(string key, int defaultValue = 0)
Paramètres
Retour
GetSubject(StoreManifest)
Récupère le sujet décodé depuis le manifest.
protected string GetSubject(StoreManifest manifest)
Paramètres
manifestStoreManifest
Retour
GetTrackingId(StoreManifest)
Récupère le premier tracking ID disponible.
protected string GetTrackingId(StoreManifest manifest)
Paramètres
manifestStoreManifest
Retour
Initialize(Dictionary<string, string>)
Initialise le handler avec les paramètres de configuration. Appelé une fois au chargement.
C'est ici que vous devez créer vos helpers d'authentification.
public virtual void Initialize(Dictionary<string, string> settings)
Paramètres
settingsDictionary<string, string>Paramètres fusionnés de Web.config et connectors.secrets.json
IsReply(StoreManifest)
Vérifie si c'est une réponse à un échange précédent.
protected bool IsReply(StoreManifest manifest)
Paramètres
manifestStoreManifest
Retour
ProcessAsync(StoreManifest, WebhookContext)
Traite un manifest SESAR et fait les actions nécessaires.
C'est la méthode principale. Vous recevez le manifest déchiffré et vous faites ce que vous voulez : appels API, transformation, etc.
public abstract Task<IntegrationResult> ProcessAsync(StoreManifest manifest, WebhookContext context)
Paramètres
manifestStoreManifestLe manifest SESAR déchiffré
contextWebhookContextContexte de la requête webhook
Retour
- Task<IntegrationResult>
Résultat de l'intégration
TestConnectionAsync()
Teste la connexion aux systèmes externes.
public virtual Task<bool> TestConnectionAsync()
Retour
ValidateConfigurationAsync(Dictionary<string, string>)
Valide que la configuration est correcte. Appelé au démarrage et lors des tests.
public virtual Task<bool> ValidateConfigurationAsync(Dictionary<string, string> settings)
Paramètres
settingsDictionary<string, string>