diff options
Diffstat (limited to 'internal/webpush/sender.go')
-rw-r--r-- | internal/webpush/sender.go | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/internal/webpush/sender.go b/internal/webpush/sender.go index 5331f049a..060118019 100644 --- a/internal/webpush/sender.go +++ b/internal/webpush/sender.go @@ -30,7 +30,9 @@ import ( // Sender can send Web Push notifications. type Sender interface { - // Send queues up a notification for delivery to all of an account's Web Push subscriptions. + + // Send queues up a notification for delivery to + // all of an account's Web Push subscriptions. Send( ctx context.Context, notification *gtsmodel.Notification, @@ -41,14 +43,26 @@ type Sender interface { // NewSender creates a new sender from an HTTP client, DB, and worker pool. func NewSender(httpClient *httpclient.Client, state *state.State, converter *typeutils.Converter) Sender { - return NewRealSender( - &http.Client{ - Transport: >sHTTPClientRoundTripper{ - httpClient: httpClient, - }, - // Other fields are already set on the http.Client inside the httpclient.Client. + return &realSender{ + httpClient: &http.Client{ + // Pass in our wrapped httpclient.Client{} + // type as http.Transport{} in order to take + // advantage of retries, SSF protection etc. + Transport: httpClient, + + // Other http.Client{} fields are already + // set in embedded httpclient.Client{}. }, - state, - converter, - ) + state: state, + converter: converter, + } +} + +// an internal function purely existing for the webpush test package to link to and use a custom http.Client{}. +func newSenderWith(client *http.Client, state *state.State, converter *typeutils.Converter) Sender { //nolint:unused + return &realSender{ + httpClient: client, + state: state, + converter: converter, + } } |