Repository navigation
feat: implement FireText SMS provider (UK) #52
Copy link
Copy link
Open
Description
Summary
Implement the FireText SMS provider inside src/SmsBridge/Providers/FireText/.
FireText is a UK SMS provider with public API documentation for sending SMS, receiving messages, checking credit, scheduled messages, and delivery reports. This adds another UK-local provider alongside Esendex and Textmagic.
Official docs:
- API docs: https://www.firetext.co.uk/docs
- PHP SDK/examples: https://github.com/FireText/FireText-PHP-SDK
Files to create
src/SmsBridge/Providers/FireText/FireTextSmsProvider.cssrc/SmsBridge/Providers/FireText/FireTextSmsRequestMapper.cssrc/SmsBridge/Providers/FireText/FireTextSmsResponseMapper.cssrc/SmsBridge/Options/FireTextOptions.cs- Register
UseFireText()insrc/SmsBridge/DependencyInjection/SmsBridgeProviderBuilder.cs - Add
HttpClientNames.FireTextinsrc/SmsBridge/Internal/Http/HttpClientNames.cs - Add
SmsProviderType.FireTextto the enum
FireText API Details
- Base URL:
https://www.firetext.co.uk - Send endpoint:
/api/sendsms - Auth: either
apiKeyorusername/password; preferapiKey - Supports GET or POST parameters
- JSON response can be requested by appending
/jsonto API URLs - Request parameters include
apiKey,to,from, andmessage - Example endpoint:
https://www.firetext.co.uk/api/sendsms/json
Options
public sealed class FireTextOptions
{
public required string ApiKey { get; init; }
public required string From { get; init; }
}Implementation Notes
- Prefer POST with form URL encoded parameters to avoid putting message content in query strings.
- Use
/api/sendsms/jsonso response mapping can avoid parsing plain status strings. - Keep username/password auth out of first implementation unless needed for compatibility.
- Map FireText status numbers and descriptions to success/failure results.
Tests to add
tests/SmsBridge.ProviderTests/FireTextResponseMapperTests.cstests/SmsBridge.ProviderTests/FireTextProviderTests.cs
Acceptance Criteria
- Provider sends via
/api/sendsms/jsonusingIHttpClientFactory - Request mapper emits
apiKey,to,from, andmessage - Response mapper handles successful and failed FireText status responses
- Transient HTTP failures set
IsTransientFailure = true -
UseFireText()registers the provider in DI - All tests pass -
dotnet test -
dotnet buildhas 0 warnings
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Activity