diff options
Diffstat (limited to 'internal/api/s2s/user/userget.go')
-rw-r--r-- | internal/api/s2s/user/userget.go | 24 |
1 files changed, 8 insertions, 16 deletions
diff --git a/internal/api/s2s/user/userget.go b/internal/api/s2s/user/userget.go index f2f846f97..abd52da22 100644 --- a/internal/api/s2s/user/userget.go +++ b/internal/api/s2s/user/userget.go @@ -19,14 +19,12 @@ package user import ( - "context" "encoding/json" "fmt" "net/http" "github.com/gin-gonic/gin" "github.com/sirupsen/logrus" - "github.com/superseriousbusiness/gotosocial/internal/util" ) // UsersGETHandler should be served at https://example.org/users/:username. @@ -50,25 +48,19 @@ func (m *Module) UsersGETHandler(c *gin.Context) { return } - // make sure this actually an AP request - format := c.NegotiateFormat(ActivityPubAcceptHeaders...) - if format == "" { - c.JSON(http.StatusNotAcceptable, gin.H{"error": "could not negotiate format with given Accept header(s)"}) + format, err := negotiateFormat(c) + if err != nil { + c.JSON(http.StatusNotAcceptable, gin.H{"error": fmt.Sprintf("could not negotiate format with given Accept header(s): %s", err)}) return } l.Tracef("negotiated format: %s", format) - // transfer the signature verifier from the gin context to the request context - ctx := c.Request.Context() - verifier, signed := c.Get(string(util.APRequestingPublicKeyVerifier)) - if signed { - ctx = context.WithValue(ctx, util.APRequestingPublicKeyVerifier, verifier) - } + ctx := populateContext(c) - user, err := m.processor.GetFediUser(ctx, requestedUsername, c.Request.URL) // GetFediUser handles auth as well - if err != nil { - l.Info(err.Error()) - c.JSON(err.Code(), gin.H{"error": err.Safe()}) + user, errWithCode := m.processor.GetFediUser(ctx, requestedUsername, c.Request.URL) // GetFediUser handles auth as well + if errWithCode != nil { + l.Info(errWithCode.Error()) + c.JSON(errWithCode.Code(), gin.H{"error": errWithCode.Safe()}) return } |