Class WebhookHandlerBase
- Namespace
- 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
- Inheritance
-
WebhookHandlerBase
- Implements
- Inherited Members
Properties
Description
Description de ce que fait ce handler
public virtual string Description { get; }
Property Value
DisplayName
Nom affiché dans les logs et interfaces d'admin
public abstract string DisplayName { get; }
Property Value
HandlerId
Identifiant unique de ce handler (ex: "my-company-crm") Utilisé dans la configuration et le routage.
public abstract string HandlerId { get; }
Property Value
Settings
Configuration chargée depuis Web.config et connectors.secrets.json
protected Dictionary<string, string> Settings { get; }
Property Value
Version
Version du handler
public virtual string Version { get; }
Property Value
Methods
DecodeBase64(string)
Décode une chaîne Base64 en texte UTF-8.
protected string DecodeBase64(string base64)
Parameters
base64string
Returns
GetFileCount(StoreManifest)
Récupère le nombre de fichiers dans le manifest.
protected int GetFileCount(StoreManifest manifest)
Parameters
manifestStoreManifest
Returns
GetRecipientEmails(StoreManifest)
Récupère la liste des emails des destinataires.
protected List<string> GetRecipientEmails(StoreManifest manifest)
Parameters
manifestStoreManifest
Returns
GetRequiredSetting(string)
Récupère un paramètre de configuration obligatoire. Lève une exception si non trouvé.
protected string GetRequiredSetting(string key)
Parameters
keystring
Returns
GetSenderEmail(StoreManifest)
Récupère l'email de l'expéditeur depuis le manifest.
protected string GetSenderEmail(StoreManifest manifest)
Parameters
manifestStoreManifest
Returns
GetSetting(string)
Récupère un paramètre de configuration. Retourne null si non trouvé.
protected string GetSetting(string key)
Parameters
keystring
Returns
GetSetting(string, string)
Récupère un paramètre de configuration avec valeur par défaut.
protected string GetSetting(string key, string defaultValue)
Parameters
Returns
GetSettingBool(string, bool)
Récupère un paramètre booléen.
protected bool GetSettingBool(string key, bool defaultValue = false)
Parameters
Returns
GetSettingInt(string, int)
Récupère un paramètre entier.
protected int GetSettingInt(string key, int defaultValue = 0)
Parameters
Returns
GetSubject(StoreManifest)
Récupère le sujet décodé depuis le manifest.
protected string GetSubject(StoreManifest manifest)
Parameters
manifestStoreManifest
Returns
GetTrackingId(StoreManifest)
Récupère le premier tracking ID disponible.
protected string GetTrackingId(StoreManifest manifest)
Parameters
manifestStoreManifest
Returns
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)
Parameters
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)
Parameters
manifestStoreManifest
Returns
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)
Parameters
manifestStoreManifestLe manifest SESAR déchiffré
contextWebhookContextContexte de la requête webhook
Returns
- Task<IntegrationResult>
Résultat de l'intégration
TestConnectionAsync()
Teste la connexion aux systèmes externes.
public virtual Task<bool> TestConnectionAsync()
Returns
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)
Parameters
settingsDictionary<string, string>