diff options
| author | 2025-08-14 14:09:06 +0200 | |
|---|---|---|
| committer | 2025-08-14 14:09:06 +0200 | |
| commit | e9b7e977a552275badf464a3b5882f41c6f879eb (patch) | |
| tree | 70f6d8228b8e9ccc58b6607bae134397e925d021 /internal/typeutils | |
| parent | [bugfix] insert filter keywords/statuses into DB when creating new filters (#... (diff) | |
| download | gotosocial-e9b7e977a552275badf464a3b5882f41c6f879eb.tar.xz | |
[performance] replace uses of fmt.Sprintf() with inlineable buildURL_() and buildPath_() functions (#4374)
Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4374
Co-authored-by: kim <grufwub@gmail.com>
Co-committed-by: kim <grufwub@gmail.com>
Diffstat (limited to 'internal/typeutils')
| -rw-r--r-- | internal/typeutils/internaltoas.go | 36 | ||||
| -rw-r--r-- | internal/typeutils/internaltoas_test.go | 8 | ||||
| -rw-r--r-- | internal/typeutils/wrap_test.go | 2 |
3 files changed, 24 insertions, 22 deletions
diff --git a/internal/typeutils/internaltoas.go b/internal/typeutils/internaltoas.go index ce1501e1a..7cf736993 100644 --- a/internal/typeutils/internaltoas.go +++ b/internal/typeutils/internaltoas.go @@ -24,6 +24,7 @@ import ( "errors" "fmt" "net/url" + "strconv" "strings" "code.superseriousbusiness.org/activity/pub" @@ -1042,7 +1043,7 @@ func (c *Converter) MentionToAS(ctx context.Context, m *gtsmodel.Mention) (vocab domain = m.TargetAccount.Domain } username := m.TargetAccount.Username - nameString := fmt.Sprintf("@%s@%s", username, domain) + nameString := "@" + username + "@" + domain nameProp := streams.NewActivityStreamsNameProperty() nameProp.AppendXMLSchemaString(nameString) mention.SetActivityStreamsName(nameProp) @@ -1104,7 +1105,7 @@ func (c *Converter) EmojiToAS(ctx context.Context, e *gtsmodel.Emoji) (vocab.Too emoji.SetJSONLDId(idProp) nameProp := streams.NewActivityStreamsNameProperty() - nameString := fmt.Sprintf(":%s:", e.Shortcode) + nameString := ":" + e.Shortcode + ":" nameProp.AppendXMLSchemaString(nameString) emoji.SetActivityStreamsName(nameProp) @@ -1490,7 +1491,7 @@ func (c *Converter) BlockToAS(ctx context.Context, b *gtsmodel.Block) (vocab.Act // } // } func (c *Converter) StatusToASRepliesCollection(ctx context.Context, status *gtsmodel.Status, onlyOtherAccounts bool) (vocab.ActivityStreamsCollection, error) { - collectionID := fmt.Sprintf("%s/replies", status.URI) + collectionID := status.URI + "/replies" collectionIDURI, err := url.Parse(collectionID) if err != nil { return nil, err @@ -1509,7 +1510,7 @@ func (c *Converter) StatusToASRepliesCollection(ctx context.Context, status *gts // first.id firstPageIDProp := streams.NewJSONLDIdProperty() - firstPageID, err := url.Parse(fmt.Sprintf("%s?page=true", collectionID)) + firstPageID, err := url.Parse(collectionID + "?page=true") if err != nil { return nil, gtserror.NewErrorInternalError(err) } @@ -1518,7 +1519,8 @@ func (c *Converter) StatusToASRepliesCollection(ctx context.Context, status *gts // first.next nextProp := streams.NewActivityStreamsNextProperty() - nextPropID, err := url.Parse(fmt.Sprintf("%s?only_other_accounts=%t&page=true", collectionID, onlyOtherAccounts)) + nextPropIDStr := collectionID + "?page=true&only_other_accounts=" + strconv.FormatBool(onlyOtherAccounts) + nextPropID, err := url.Parse(nextPropIDStr) if err != nil { return nil, gtserror.NewErrorInternalError(err) } @@ -1553,15 +1555,15 @@ func (c *Converter) StatusToASRepliesCollection(ctx context.Context, status *gts // ] // } func (c *Converter) StatusURIsToASRepliesPage(ctx context.Context, status *gtsmodel.Status, onlyOtherAccounts bool, minID string, replies map[string]*url.URL) (vocab.ActivityStreamsCollectionPage, error) { - collectionID := fmt.Sprintf("%s/replies", status.URI) + collectionID := status.URI + "/replies" page := streams.NewActivityStreamsCollectionPage() // .id pageIDProp := streams.NewJSONLDIdProperty() - pageIDString := fmt.Sprintf("%s?page=true&only_other_accounts=%t", collectionID, onlyOtherAccounts) + pageIDString := collectionID + "?page=true&only_other_accounts=" + strconv.FormatBool(onlyOtherAccounts) if minID != "" { - pageIDString = fmt.Sprintf("%s&min_id=%s", pageIDString, minID) + pageIDString += "&min_id=" + minID } pageID, err := url.Parse(pageIDString) @@ -1593,9 +1595,9 @@ func (c *Converter) StatusURIsToASRepliesPage(ctx context.Context, status *gtsmo // .next nextProp := streams.NewActivityStreamsNextProperty() - nextPropIDString := fmt.Sprintf("%s?only_other_accounts=%t&page=true", collectionID, onlyOtherAccounts) + nextPropIDString := collectionID + "?page=true&only_other_accounts=" + strconv.FormatBool(onlyOtherAccounts) if highestID != "" { - nextPropIDString = fmt.Sprintf("%s&min_id=%s", nextPropIDString, highestID) + nextPropIDString += "&min_id=" + minID } nextPropID, err := url.Parse(nextPropIDString) @@ -1643,12 +1645,12 @@ func (c *Converter) StatusesToASOutboxPage(ctx context.Context, outboxID string, // .id pageIDProp := streams.NewJSONLDIdProperty() - pageID := fmt.Sprintf("%s?page=true", outboxID) + pageID := outboxID + "?page=true" if minID != "" { - pageID = fmt.Sprintf("%s&minID=%s", pageID, minID) + pageID += "&min_id=" + minID } if maxID != "" { - pageID = fmt.Sprintf("%s&maxID=%s", pageID, maxID) + pageID += "&max_id=" + maxID } pageIDURI, err := url.Parse(pageID) if err != nil { @@ -1691,7 +1693,7 @@ func (c *Converter) StatusesToASOutboxPage(ctx context.Context, outboxID string, // .next if lowest != "" { nextProp := streams.NewActivityStreamsNextProperty() - nextPropIDString := fmt.Sprintf("%s?page=true&max_id=%s", outboxID, lowest) + nextPropIDString := outboxID + "?page=true&max_id=" + lowest nextPropIDURI, err := url.Parse(nextPropIDString) if err != nil { return nil, err @@ -1703,7 +1705,7 @@ func (c *Converter) StatusesToASOutboxPage(ctx context.Context, outboxID string, // .prev if highest != "" { prevProp := streams.NewActivityStreamsPrevProperty() - prevPropIDString := fmt.Sprintf("%s?page=true&min_id=%s", outboxID, highest) + prevPropIDString := outboxID + "?page=true&min_id=" + highest prevPropIDURI, err := url.Parse(prevPropIDString) if err != nil { return nil, err @@ -1854,7 +1856,7 @@ func (c *Converter) PollVoteToASCreates( ap.AppendTo(create, pollAuthorIRI) // Create ID formatted as: {$voterIRI}/activity#vote{$index}/{$statusIRI}. - createID := fmt.Sprintf("%s/activity#vote%d/%s", author.URI, i, poll.Status.URI) + createID := author.URI + "/activity#vote" + strconv.Itoa(i) + "/" + poll.Status.URI ap.MustSet(ap.SetJSONLDIdStr, ap.WithJSONLDId(create), createID) // Set Create actor appropriately. @@ -1867,7 +1869,7 @@ func (c *Converter) PollVoteToASCreates( note := streams.NewActivityStreamsNote() // For AP IRI generate from author URI + poll ID + vote choice. - id := fmt.Sprintf("%s#%s/votes/%d", author.URI, poll.ID, choice) + id := author.URI + "#" + poll.ID + "/votes/" + strconv.Itoa(choice) ap.MustSet(ap.SetJSONLDIdStr, ap.WithJSONLDId(note), id) // Attach new name property to note with vote choice. diff --git a/internal/typeutils/internaltoas_test.go b/internal/typeutils/internaltoas_test.go index f3e19bb81..5c3e52ddb 100644 --- a/internal/typeutils/internaltoas_test.go +++ b/internal/typeutils/internaltoas_test.go @@ -600,7 +600,7 @@ func (suite *InternalToASTestSuite) TestStatusToAS() { "replies": { "first": { "id": "http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY/replies?page=true", - "next": "http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY/replies?only_other_accounts=false\u0026page=true", + "next": "http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY/replies?page=true\u0026only_other_accounts=false", "partOf": "http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY/replies", "type": "CollectionPage" }, @@ -702,7 +702,7 @@ func (suite *InternalToASTestSuite) TestStatusWithTagsToASWithIDs() { "replies": { "first": { "id": "http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R/replies?page=true", - "next": "http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R/replies?only_other_accounts=false\u0026page=true", + "next": "http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R/replies?page=true\u0026only_other_accounts=false", "partOf": "http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R/replies", "type": "CollectionPage" }, @@ -822,7 +822,7 @@ func (suite *InternalToASTestSuite) TestStatusWithTagsToASFromDB() { "replies": { "first": { "id": "http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R/replies?page=true", - "next": "http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R/replies?only_other_accounts=false\u0026page=true", + "next": "http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R/replies?page=true\u0026only_other_accounts=false", "partOf": "http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R/replies", "type": "CollectionPage" }, @@ -927,7 +927,7 @@ func (suite *InternalToASTestSuite) TestStatusToASWithMentions() { "replies": { "first": { "id": "http://localhost:8080/users/admin/statuses/01FF25D5Q0DH7CHD57CTRS6WK0/replies?page=true", - "next": "http://localhost:8080/users/admin/statuses/01FF25D5Q0DH7CHD57CTRS6WK0/replies?only_other_accounts=false\u0026page=true", + "next": "http://localhost:8080/users/admin/statuses/01FF25D5Q0DH7CHD57CTRS6WK0/replies?page=true\u0026only_other_accounts=false", "partOf": "http://localhost:8080/users/admin/statuses/01FF25D5Q0DH7CHD57CTRS6WK0/replies", "type": "CollectionPage" }, diff --git a/internal/typeutils/wrap_test.go b/internal/typeutils/wrap_test.go index c0c51b37a..4f630124b 100644 --- a/internal/typeutils/wrap_test.go +++ b/internal/typeutils/wrap_test.go @@ -130,7 +130,7 @@ func (suite *WrapTestSuite) TestWrapNoteInCreate() { "replies": { "first": { "id": "http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY/replies?page=true", - "next": "http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY/replies?only_other_accounts=false\u0026page=true", + "next": "http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY/replies?page=true\u0026only_other_accounts=false", "partOf": "http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY/replies", "type": "CollectionPage" }, |
