summaryrefslogtreecommitdiff
path: root/internal/api
diff options
context:
space:
mode:
Diffstat (limited to 'internal/api')
-rw-r--r--internal/api/client/account/account.go2
-rw-r--r--internal/api/client/account/accountget.go6
-rw-r--r--internal/api/client/account/statuses.go24
-rw-r--r--internal/api/s2s/user/inboxpost_test.go2
4 files changed, 28 insertions, 6 deletions
diff --git a/internal/api/client/account/account.go b/internal/api/client/account/account.go
index c38a8cfb4..4205baa2c 100644
--- a/internal/api/client/account/account.go
+++ b/internal/api/client/account/account.go
@@ -34,6 +34,8 @@ const (
LimitKey = "limit"
// ExcludeRepliesKey is for specifying whether to exclude replies in a list of returned statuses by an account.
ExcludeRepliesKey = "exclude_replies"
+ // ExcludeReblogsKey is for specifying whether to exclude reblogs in a list of returned statuses by an account.
+ ExcludeReblogsKey = "exclude_reblogs"
// PinnedKey is for specifying whether to include pinned statuses in a list of returned statuses by an account.
PinnedKey = "pinned"
// MaxIDKey is for specifying the maximum ID of the status to retrieve.
diff --git a/internal/api/client/account/accountget.go b/internal/api/client/account/accountget.go
index 6085d2d3e..1fa7014eb 100644
--- a/internal/api/client/account/accountget.go
+++ b/internal/api/client/account/accountget.go
@@ -22,6 +22,7 @@ import (
"net/http"
"github.com/gin-gonic/gin"
+ "github.com/sirupsen/logrus"
"github.com/superseriousbusiness/gotosocial/internal/api"
"github.com/superseriousbusiness/gotosocial/internal/oauth"
)
@@ -76,9 +77,10 @@ func (m *Module) AccountGETHandler(c *gin.Context) {
return
}
- acctInfo, err := m.processor.AccountGet(c.Request.Context(), authed, targetAcctID)
+ acctInfo, errWithCode := m.processor.AccountGet(c.Request.Context(), authed, targetAcctID)
if err != nil {
- c.JSON(http.StatusNotFound, gin.H{"error": "not found"})
+ logrus.Debug(errWithCode.Error())
+ c.JSON(errWithCode.Code(), gin.H{"error": errWithCode.Safe()})
return
}
diff --git a/internal/api/client/account/statuses.go b/internal/api/client/account/statuses.go
index 67a9f7cb8..b440e582a 100644
--- a/internal/api/client/account/statuses.go
+++ b/internal/api/client/account/statuses.go
@@ -60,6 +60,12 @@ import (
// default: false
// in: query
// required: false
+// - name: exclude_reblogs
+// type: boolean
+// description: Exclude statuses that are a reblog/boost of another status.
+// default: false
+// in: query
+// required: false
// - name: max_id
// type: string
// description: |-
@@ -75,7 +81,7 @@ import (
// required: false
// - name: pinned_only
// type: boolean
-// description: Show only pinned statuses. In other words,e xclude statuses that are not pinned to the given account ID.
+// description: Show only pinned statuses. In other words, exclude statuses that are not pinned to the given account ID.
// default: false
// in: query
// required: false
@@ -149,13 +155,25 @@ func (m *Module) AccountStatusesGETHandler(c *gin.Context) {
if excludeRepliesString != "" {
i, err := strconv.ParseBool(excludeRepliesString)
if err != nil {
- l.Debugf("error parsing replies string: %s", err)
+ l.Debugf("error parsing exclude replies string: %s", err)
c.JSON(http.StatusBadRequest, gin.H{"error": "couldn't parse exclude replies query param"})
return
}
excludeReplies = i
}
+ excludeReblogs := false
+ excludeReblogsString := c.Query(ExcludeReblogsKey)
+ if excludeReblogsString != "" {
+ i, err := strconv.ParseBool(excludeReblogsString)
+ if err != nil {
+ l.Debugf("error parsing exclude reblogs string: %s", err)
+ c.JSON(http.StatusBadRequest, gin.H{"error": "couldn't parse exclude reblogs query param"})
+ return
+ }
+ excludeReblogs = i
+ }
+
maxID := ""
maxIDString := c.Query(MaxIDKey)
if maxIDString != "" {
@@ -204,7 +222,7 @@ func (m *Module) AccountStatusesGETHandler(c *gin.Context) {
publicOnly = i
}
- statuses, errWithCode := m.processor.AccountStatusesGet(c.Request.Context(), authed, targetAcctID, limit, excludeReplies, maxID, minID, pinnedOnly, mediaOnly, publicOnly)
+ statuses, errWithCode := m.processor.AccountStatusesGet(c.Request.Context(), authed, targetAcctID, limit, excludeReplies, excludeReblogs, maxID, minID, pinnedOnly, mediaOnly, publicOnly)
if errWithCode != nil {
l.Debugf("error from processor account statuses get: %s", errWithCode)
c.JSON(errWithCode.Code(), gin.H{"error": errWithCode.Safe()})
diff --git a/internal/api/s2s/user/inboxpost_test.go b/internal/api/s2s/user/inboxpost_test.go
index 2f43799c8..f9a3c5de1 100644
--- a/internal/api/s2s/user/inboxpost_test.go
+++ b/internal/api/s2s/user/inboxpost_test.go
@@ -440,7 +440,7 @@ func (suite *InboxPostTestSuite) TestPostDelete() {
suite.ErrorIs(err, db.ErrNoEntries)
// no statuses from foss satan should be left in the database
- dbStatuses, err := suite.db.GetAccountStatuses(ctx, deletedAccount.ID, 0, false, "", "", false, false, false)
+ dbStatuses, err := suite.db.GetAccountStatuses(ctx, deletedAccount.ID, 0, false, false, "", "", false, false, false)
suite.ErrorIs(err, db.ErrNoEntries)
suite.Empty(dbStatuses)