mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-11-23 23:53:32 -06:00
[chore] some tidy ups (#3677)
* small formatting changes (no logic) * improve code comments * fix import cycle * shutup stinky linter
This commit is contained in:
parent
3617e27afa
commit
726d2ba483
6 changed files with 51 additions and 47 deletions
|
|
@ -33,30 +33,20 @@ import (
|
|||
"github.com/superseriousbusiness/gotosocial/internal/filter/usermute"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/httpclient"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/log"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/state"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/text"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/typeutils"
|
||||
)
|
||||
|
||||
// realSender is the production Web Push sender, backed by an HTTP client, DB, and worker pool.
|
||||
// realSender is the production Web Push sender,
|
||||
// backed by an HTTP client, DB, and worker pool.
|
||||
type realSender struct {
|
||||
httpClient *http.Client
|
||||
state *state.State
|
||||
converter *typeutils.Converter
|
||||
}
|
||||
|
||||
// NewRealSender creates a Sender from an http.Client instead of an httpclient.Client.
|
||||
// This should only be used by NewSender and in tests.
|
||||
func NewRealSender(httpClient *http.Client, state *state.State, converter *typeutils.Converter) Sender {
|
||||
return &realSender{
|
||||
httpClient: httpClient,
|
||||
state: state,
|
||||
converter: converter,
|
||||
}
|
||||
}
|
||||
|
||||
func (r *realSender) Send(
|
||||
ctx context.Context,
|
||||
notification *gtsmodel.Notification,
|
||||
|
|
@ -329,13 +319,3 @@ func formatNotificationBody(apiNotification *apimodel.Notification) string {
|
|||
func firstNBytesTrimSpace(s string, n int) string {
|
||||
return strings.TrimSpace(text.FirstNBytesByWords(strings.TrimSpace(s), n))
|
||||
}
|
||||
|
||||
// gtsHTTPClientRoundTripper helps wrap a GtS HTTP client back into a regular HTTP client,
|
||||
// so that webpush-go can use our IP filters, bad hosts list, and retries.
|
||||
type gtsHTTPClientRoundTripper struct {
|
||||
httpClient *httpclient.Client
|
||||
}
|
||||
|
||||
func (r *gtsHTTPClientRoundTripper) RoundTrip(request *http.Request) (*http.Response, error) {
|
||||
return r.httpClient.Do(request)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,6 +24,9 @@ import (
|
|||
"testing"
|
||||
"time"
|
||||
|
||||
// for go:linkname
|
||||
_ "unsafe"
|
||||
|
||||
"github.com/stretchr/testify/suite"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/cleaner"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/db"
|
||||
|
|
@ -120,7 +123,7 @@ func (suite *RealSenderStandardTestSuite) SetupTest() {
|
|||
suite.oauthServer = testrig.NewTestOauthServer(suite.db)
|
||||
suite.emailSender = testrig.NewEmailSender("../../web/template/", nil)
|
||||
|
||||
suite.webPushSender = webpush.NewRealSender(
|
||||
suite.webPushSender = newSenderWith(
|
||||
&http.Client{
|
||||
Transport: suite,
|
||||
},
|
||||
|
|
@ -261,3 +264,6 @@ func (suite *RealSenderStandardTestSuite) TestServerError() {
|
|||
func TestRealSenderStandardTestSuite(t *testing.T) {
|
||||
suite.Run(t, &RealSenderStandardTestSuite{})
|
||||
}
|
||||
|
||||
//go:linkname newSenderWith github.com/superseriousbusiness/gotosocial/internal/webpush.newSenderWith
|
||||
func newSenderWith(*http.Client, *state.State, *typeutils.Converter) webpush.Sender
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue