diff options
Diffstat (limited to 'internal/api')
| -rw-r--r-- | internal/api/activitypub/users/outboxget.go | 34 | ||||
| -rw-r--r-- | internal/api/activitypub/users/outboxget_test.go | 17 | 
2 files changed, 20 insertions, 31 deletions
diff --git a/internal/api/activitypub/users/outboxget.go b/internal/api/activitypub/users/outboxget.go index 7dcc354ac..43379ad8f 100644 --- a/internal/api/activitypub/users/outboxget.go +++ b/internal/api/activitypub/users/outboxget.go @@ -19,14 +19,13 @@ package users  import (  	"errors" -	"fmt"  	"net/http" -	"strconv"  	"strings"  	"github.com/gin-gonic/gin"  	apiutil "github.com/superseriousbusiness/gotosocial/internal/api/util"  	"github.com/superseriousbusiness/gotosocial/internal/gtserror" +	"github.com/superseriousbusiness/gotosocial/internal/paging"  )  // OutboxGETHandler swagger:operation GET /users/{username}/outbox s2sOutboxGet @@ -105,30 +104,17 @@ func (m *Module) OutboxGETHandler(c *gin.Context) {  		return  	} -	var page bool -	if pageString := c.Query(PageKey); pageString != "" { -		i, err := strconv.ParseBool(pageString) -		if err != nil { -			err := fmt.Errorf("error parsing %s: %s", PageKey, err) -			apiutil.ErrorHandler(c, gtserror.NewErrorBadRequest(err, err.Error()), m.processor.InstanceGetV1) -			return -		} -		page = i -	} - -	minID := "" -	minIDString := c.Query(MinIDKey) -	if minIDString != "" { -		minID = minIDString -	} - -	maxID := "" -	maxIDString := c.Query(MaxIDKey) -	if maxIDString != "" { -		maxID = maxIDString +	page, errWithCode := paging.ParseIDPage(c, +		1,  // min limit +		80, // max limit +		0,  // default = disabled +	) +	if errWithCode != nil { +		apiutil.ErrorHandler(c, errWithCode, m.processor.InstanceGetV1) +		return  	} -	resp, errWithCode := m.processor.Fedi().OutboxGet(c.Request.Context(), requestedUsername, page, maxID, minID) +	resp, errWithCode := m.processor.Fedi().OutboxGet(c.Request.Context(), requestedUsername, page)  	if errWithCode != nil {  		apiutil.ErrorHandler(c, errWithCode, m.processor.InstanceGetV1)  		return diff --git a/internal/api/activitypub/users/outboxget_test.go b/internal/api/activitypub/users/outboxget_test.go index 55e9f2f78..521af0ff0 100644 --- a/internal/api/activitypub/users/outboxget_test.go +++ b/internal/api/activitypub/users/outboxget_test.go @@ -80,8 +80,9 @@ func (suite *OutboxGetTestSuite) TestGetOutbox() {  	suite.NoError(err)  	suite.Equal(`{    "@context": "https://www.w3.org/ns/activitystreams", -  "first": "http://localhost:8080/users/the_mighty_zork/outbox?page=true", +  "first": "http://localhost:8080/users/the_mighty_zork/outbox?limit=40",    "id": "http://localhost:8080/users/the_mighty_zork/outbox", +  "totalItems": 7,    "type": "OrderedCollection"  }`, dst.String()) @@ -105,7 +106,7 @@ func (suite *OutboxGetTestSuite) TestGetOutboxFirstPage() {  	// setup request  	recorder := httptest.NewRecorder()  	ctx, _ := testrig.CreateGinTestContext(recorder, nil) -	ctx.Request = httptest.NewRequest(http.MethodGet, targetAccount.OutboxURI+"?page=true", nil) // the endpoint we're hitting +	ctx.Request = httptest.NewRequest(http.MethodGet, targetAccount.OutboxURI+"?limit=40", nil) // the endpoint we're hitting  	ctx.Request.Header.Set("accept", "application/activity+json")  	ctx.Request.Header.Set("Signature", signedRequest.SignatureHeader)  	ctx.Request.Header.Set("Date", signedRequest.DateHeader) @@ -138,8 +139,8 @@ func (suite *OutboxGetTestSuite) TestGetOutboxFirstPage() {  	suite.NoError(err)  	suite.Equal(`{    "@context": "https://www.w3.org/ns/activitystreams", -  "id": "http://localhost:8080/users/the_mighty_zork/outbox?page=true", -  "next": "http://localhost:8080/users/the_mighty_zork/outbox?page=true\u0026max_id=01F8MHAMCHF6Y650WCRSCP4WMY", +  "id": "http://localhost:8080/users/the_mighty_zork/outbox?limit=40", +  "next": "http://localhost:8080/users/the_mighty_zork/outbox?limit=40\u0026max_id=01F8MHAMCHF6Y650WCRSCP4WMY",    "orderedItems": [      {        "actor": "http://localhost:8080/users/the_mighty_zork", @@ -159,7 +160,8 @@ func (suite *OutboxGetTestSuite) TestGetOutboxFirstPage() {      }    ],    "partOf": "http://localhost:8080/users/the_mighty_zork/outbox", -  "prev": "http://localhost:8080/users/the_mighty_zork/outbox?page=true\u0026min_id=01HH9KYNQPA416TNJ53NSATP40", +  "prev": "http://localhost:8080/users/the_mighty_zork/outbox?limit=40\u0026min_id=01HH9KYNQPA416TNJ53NSATP40", +  "totalItems": 7,    "type": "OrderedCollectionPage"  }`, dst.String()) @@ -183,7 +185,7 @@ func (suite *OutboxGetTestSuite) TestGetOutboxNextPage() {  	// setup request  	recorder := httptest.NewRecorder()  	ctx, _ := testrig.CreateGinTestContext(recorder, nil) -	ctx.Request = httptest.NewRequest(http.MethodGet, targetAccount.OutboxURI+"?page=true&max_id=01F8MHAMCHF6Y650WCRSCP4WMY", nil) // the endpoint we're hitting +	ctx.Request = httptest.NewRequest(http.MethodGet, targetAccount.OutboxURI+"?limit=40&max_id=01F8MHAMCHF6Y650WCRSCP4WMY", nil) // the endpoint we're hitting  	ctx.Request.Header.Set("accept", "application/activity+json")  	ctx.Request.Header.Set("Signature", signedRequest.SignatureHeader)  	ctx.Request.Header.Set("Date", signedRequest.DateHeader) @@ -219,9 +221,10 @@ func (suite *OutboxGetTestSuite) TestGetOutboxNextPage() {  	suite.NoError(err)  	suite.Equal(`{    "@context": "https://www.w3.org/ns/activitystreams", -  "id": "http://localhost:8080/users/the_mighty_zork/outbox?page=true&maxID=01F8MHAMCHF6Y650WCRSCP4WMY", +  "id": "http://localhost:8080/users/the_mighty_zork/outbox?limit=40&max_id=01F8MHAMCHF6Y650WCRSCP4WMY",    "orderedItems": [],    "partOf": "http://localhost:8080/users/the_mighty_zork/outbox", +  "totalItems": 7,    "type": "OrderedCollectionPage"  }`, dst.String())  | 
