Namespace SESARWebHook.Core
Classes
- WebhookHandlerBase
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); } } } }