forked from mirrors/gotosocial
083099a957
* reference logrus' global logger instead of passing and storing a logger reference everywhere * always directly use global logrus logger instead of referencing an instance * test suites should also directly use the global logrus logger * rename gin logging function to clarify that it's middleware * correct comments which erroneously referenced removed logger parameter * setting log level for tests now uses logrus' exported type instead of the string value, to guarantee error isn't possible
84 lines
2.1 KiB
Go
84 lines
2.1 KiB
Go
package account
|
|
|
|
import (
|
|
"github.com/sirupsen/logrus"
|
|
"net/http"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/superseriousbusiness/gotosocial/internal/api/model"
|
|
"github.com/superseriousbusiness/gotosocial/internal/oauth"
|
|
)
|
|
|
|
// AccountRelationshipsGETHandler swagger:operation GET /api/v1/accounts/relationships accountRelationships
|
|
//
|
|
// See your account's relationships with the given account IDs.
|
|
//
|
|
// ---
|
|
// tags:
|
|
// - accounts
|
|
//
|
|
// produces:
|
|
// - application/json
|
|
//
|
|
// parameters:
|
|
// - name: id
|
|
// type: array
|
|
// items:
|
|
// type: string
|
|
// description: Account IDs.
|
|
// in: query
|
|
// required: true
|
|
//
|
|
// security:
|
|
// - OAuth2 Bearer:
|
|
// - read:accounts
|
|
//
|
|
// responses:
|
|
// '200':
|
|
// name: account relationships
|
|
// description: Array of account relationships.
|
|
// schema:
|
|
// type: array
|
|
// items:
|
|
// "$ref": "#/definitions/accountRelationship"
|
|
// '401':
|
|
// description: unauthorized
|
|
// '400':
|
|
// description: bad request
|
|
// '404':
|
|
// description: not found
|
|
func (m *Module) AccountRelationshipsGETHandler(c *gin.Context) {
|
|
l := logrus.WithField("func", "AccountRelationshipsGETHandler")
|
|
|
|
authed, err := oauth.Authed(c, true, true, true, true)
|
|
if err != nil {
|
|
l.Debugf("error authing: %s", err)
|
|
c.JSON(http.StatusUnauthorized, gin.H{"error": "unauthorized"})
|
|
return
|
|
}
|
|
|
|
targetAccountIDs := c.QueryArray("id[]")
|
|
if len(targetAccountIDs) == 0 {
|
|
// check fallback -- let's be generous and see if maybe it's just set as 'id'?
|
|
id := c.Query("id")
|
|
if id == "" {
|
|
l.Debug("no account id specified in query")
|
|
c.JSON(http.StatusBadRequest, gin.H{"error": "no account id specified"})
|
|
return
|
|
}
|
|
targetAccountIDs = append(targetAccountIDs, id)
|
|
}
|
|
|
|
relationships := []model.Relationship{}
|
|
|
|
for _, targetAccountID := range targetAccountIDs {
|
|
r, errWithCode := m.processor.AccountRelationshipGet(c.Request.Context(), authed, targetAccountID)
|
|
if err != nil {
|
|
c.JSON(errWithCode.Code(), gin.H{"error": errWithCode.Safe()})
|
|
return
|
|
}
|
|
relationships = append(relationships, *r)
|
|
}
|
|
|
|
c.JSON(http.StatusOK, relationships)
|
|
}
|