Namespace SESARWebHook.Core.Interfaces
Interfaces
- IIntegrationConnector
Interface that all integration connectors must implement. Each connector handles synchronization with a specific external system.
- IWebhookHandler
Interface simplifiée pour les clients qui veulent implémenter leur propre webhook handler.
RESPONSABILITÉS :
- Vous recevez le manifest SESAR déchiffré
- Vous utilisez nos helpers d'authentification (OAuth2, API Key, etc.)
- Vous faites vos propres appels API
- Vous implémentez VOTRE logique d'affaire
CE QUE NOUS GÉRONS :
- Réception du webhook SESAR
- Déchiffrement du manifest
- Helpers d'authentification (OAuth2ClientCredentialsHelper, OAuth2RefreshTokenHelper, ApiKeyHelper)
CE QUE VOUS GÉREZ :
- Transformation des données vers votre format
- Appels HTTP vers votre système
- Logique d'affaire spécifique
EXEMPLE :
public class MyHandler : WebhookHandlerBase { private OAuth2ClientCredentialsHelper _auth; public override string HandlerId => "my-handler"; public override string DisplayName => "My Handler"; public override void Initialize(Dictionary<string, string> settings) { base.Initialize(settings); _auth = OAuth2ClientCredentialsHelper.ForDynamics365( GetRequiredSetting("TenantId"), GetRequiredSetting("ClientId"), GetRequiredSetting("ClientSecret"), GetRequiredSetting("ResourceUrl") ); } public override async Task<IntegrationResult> ProcessAsync( StoreManifest manifest, WebhookContext context) { // 1. Extraire les données var email = GetSenderEmail(manifest); var subject = GetSubject(manifest); // 2. Obtenir le token (avec notre helper) var token = await _auth.GetAccessTokenAsync(); // 3. Faire votre appel API using (var client = new HttpClient()) { client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); var response = await client.PostAsync("https://your-api.com/endpoint", new StringContent(JsonConvert.SerializeObject(new { email, subject }))); if (response.IsSuccessStatusCode) return IntegrationResult.Ok("Success"); else return IntegrationResult.Fail("Error", await response.Content.ReadAsStringAsync()); } } }