## Summary Implement the Cequens SMS provider inside `src/SmsBridge/Providers/Cequens/`. Cequens is an Egypt-based CPaaS platform with strong coverage across the Middle East and North Africa (MENA) region. ## Files to create - `src/SmsBridge/Providers/Cequens/CequensSmsProvider.cs` - `src/SmsBridge/Providers/Cequens/CequensSmsRequestMapper.cs` - `src/SmsBridge/Providers/Cequens/CequensSmsResponseMapper.cs` - `src/SmsBridge/Options/CequensOptions.cs` - Register `UseCequens()` in `src/SmsBridge/DependencyInjection/SmsBridgeProviderBuilder.cs` - Add `HttpClientNames.Cequens` in `src/SmsBridge/Internal/Http/HttpClientNames.cs` - Add `SmsProviderType.Cequens` to the enum ## Cequens API Details - Endpoint: `https://apis.cequens.com/sms/v1/messages` - Auth: `Authorization: Bearer <api_token>` - Request (JSON): ```json { "senderName": "...", "messageText": "...", "messageType": "text", "recipients": "..." } ``` - Response: `{ "messageId": "...", "status": 0 }` — `status: 0` = success ## Options ```csharp public sealed class CequensOptions { public required string ApiToken { get; init; } public required string From { get; init; } } ``` ## Tests to add - `tests/SmsBridge.ProviderTests/CequensResponseMapperTests.cs` - `tests/SmsBridge.ProviderTests/CequensProviderTests.cs` ## Acceptance Criteria - [ ] Provider sends via Cequens REST API using `IHttpClientFactory` - [ ] Response mapper checks `status == 0` for success - [ ] Transient failures set `IsTransientFailure = true` - [ ] `UseCequens()` registers the provider in DI - [ ] All tests pass — `dotnet test` - [ ] `dotnet build` has 0 warnings
Activity