[chore] The Big Middleware and API Refactor (tm) (#1250)

* interim commit: start refactoring middlewares into package under router

* another interim commit, this is becoming a big job

* another fucking massive interim commit

* refactor bookmarks to new style

* ambassador, wiz zeze commits you are spoiling uz

* she compiles, we're getting there

* we're just normal men; we're just innocent men

* apiutil

* whoopsie

* i'm glad noone reads commit msgs haha :blob_sweat:

* use that weirdo go-bytesize library for maxMultipartMemory

* fix media module paths
This commit is contained in:
tobi 2023-01-02 13:10:50 +01:00 committed by GitHub
commit 941893a774
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
228 changed files with 3188 additions and 3047 deletions

View file

@ -23,7 +23,7 @@ import (
"testing"
"github.com/stretchr/testify/suite"
"github.com/superseriousbusiness/gotosocial/internal/api/model"
apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model"
"github.com/superseriousbusiness/gotosocial/internal/config"
"github.com/superseriousbusiness/gotosocial/internal/db"
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
@ -39,20 +39,20 @@ func (suite *StatusCreateTestSuite) TestProcessContentWarningWithQuotationMarks(
creatingAccount := suite.testAccounts["local_account_1"]
creatingApplication := suite.testApplications["application_1"]
statusCreateForm := &model.AdvancedStatusCreateForm{
StatusCreateRequest: model.StatusCreateRequest{
statusCreateForm := &apimodel.AdvancedStatusCreateForm{
StatusCreateRequest: apimodel.StatusCreateRequest{
Status: "poopoo peepee",
MediaIDs: []string{},
Poll: nil,
InReplyToID: "",
Sensitive: false,
SpoilerText: "\"test\"", // these should not be html-escaped when the final text is rendered
Visibility: model.VisibilityPublic,
Visibility: apimodel.VisibilityPublic,
ScheduledAt: "",
Language: "en",
Format: model.StatusFormatPlain,
Format: apimodel.StatusFormatPlain,
},
AdvancedVisibilityFlagsForm: model.AdvancedVisibilityFlagsForm{
AdvancedVisibilityFlagsForm: apimodel.AdvancedVisibilityFlagsForm{
Federated: nil,
Boostable: nil,
Replyable: nil,
@ -73,20 +73,20 @@ func (suite *StatusCreateTestSuite) TestProcessContentWarningWithHTMLEscapedQuot
creatingAccount := suite.testAccounts["local_account_1"]
creatingApplication := suite.testApplications["application_1"]
statusCreateForm := &model.AdvancedStatusCreateForm{
StatusCreateRequest: model.StatusCreateRequest{
statusCreateForm := &apimodel.AdvancedStatusCreateForm{
StatusCreateRequest: apimodel.StatusCreateRequest{
Status: "poopoo peepee",
MediaIDs: []string{},
Poll: nil,
InReplyToID: "",
Sensitive: false,
SpoilerText: "&#34test&#34", // the html-escaped quotation marks should appear as normal quotation marks in the finished text
Visibility: model.VisibilityPublic,
Visibility: apimodel.VisibilityPublic,
ScheduledAt: "",
Language: "en",
Format: model.StatusFormatPlain,
Format: apimodel.StatusFormatPlain,
},
AdvancedVisibilityFlagsForm: model.AdvancedVisibilityFlagsForm{
AdvancedVisibilityFlagsForm: apimodel.AdvancedVisibilityFlagsForm{
Federated: nil,
Boostable: nil,
Replyable: nil,
@ -112,19 +112,19 @@ func (suite *StatusCreateTestSuite) TestProcessStatusMarkdownWithUnderscoreEmoji
creatingAccount := suite.testAccounts["local_account_1"]
creatingApplication := suite.testApplications["application_1"]
statusCreateForm := &model.AdvancedStatusCreateForm{
StatusCreateRequest: model.StatusCreateRequest{
statusCreateForm := &apimodel.AdvancedStatusCreateForm{
StatusCreateRequest: apimodel.StatusCreateRequest{
Status: "poopoo peepee :_rainbow_:",
MediaIDs: []string{},
Poll: nil,
InReplyToID: "",
Sensitive: false,
Visibility: model.VisibilityPublic,
Visibility: apimodel.VisibilityPublic,
ScheduledAt: "",
Language: "en",
Format: model.StatusFormatMarkdown,
Format: apimodel.StatusFormatMarkdown,
},
AdvancedVisibilityFlagsForm: model.AdvancedVisibilityFlagsForm{
AdvancedVisibilityFlagsForm: apimodel.AdvancedVisibilityFlagsForm{
Federated: nil,
Boostable: nil,
Replyable: nil,
@ -145,20 +145,20 @@ func (suite *StatusCreateTestSuite) TestProcessStatusMarkdownWithSpoilerTextEmoj
creatingAccount := suite.testAccounts["local_account_1"]
creatingApplication := suite.testApplications["application_1"]
statusCreateForm := &model.AdvancedStatusCreateForm{
StatusCreateRequest: model.StatusCreateRequest{
statusCreateForm := &apimodel.AdvancedStatusCreateForm{
StatusCreateRequest: apimodel.StatusCreateRequest{
Status: "poopoo peepee",
SpoilerText: "testing something :rainbow:",
MediaIDs: []string{},
Poll: nil,
InReplyToID: "",
Sensitive: false,
Visibility: model.VisibilityPublic,
Visibility: apimodel.VisibilityPublic,
ScheduledAt: "",
Language: "en",
Format: model.StatusFormatMarkdown,
Format: apimodel.StatusFormatMarkdown,
},
AdvancedVisibilityFlagsForm: model.AdvancedVisibilityFlagsForm{
AdvancedVisibilityFlagsForm: apimodel.AdvancedVisibilityFlagsForm{
Federated: nil,
Boostable: nil,
Replyable: nil,
@ -183,20 +183,20 @@ func (suite *StatusCreateTestSuite) TestProcessMediaDescriptionTooShort() {
creatingAccount := suite.testAccounts["local_account_1"]
creatingApplication := suite.testApplications["application_1"]
statusCreateForm := &model.AdvancedStatusCreateForm{
StatusCreateRequest: model.StatusCreateRequest{
statusCreateForm := &apimodel.AdvancedStatusCreateForm{
StatusCreateRequest: apimodel.StatusCreateRequest{
Status: "poopoo peepee",
MediaIDs: []string{suite.testAttachments["local_account_1_unattached_1"].ID},
Poll: nil,
InReplyToID: "",
Sensitive: false,
SpoilerText: "",
Visibility: model.VisibilityPublic,
Visibility: apimodel.VisibilityPublic,
ScheduledAt: "",
Language: "en",
Format: model.StatusFormatPlain,
Format: apimodel.StatusFormatPlain,
},
AdvancedVisibilityFlagsForm: model.AdvancedVisibilityFlagsForm{
AdvancedVisibilityFlagsForm: apimodel.AdvancedVisibilityFlagsForm{
Federated: nil,
Boostable: nil,
Replyable: nil,

View file

@ -23,7 +23,6 @@ import (
"errors"
"fmt"
"github.com/superseriousbusiness/gotosocial/internal/api/model"
apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model"
"github.com/superseriousbusiness/gotosocial/internal/config"
"github.com/superseriousbusiness/gotosocial/internal/db"
@ -303,11 +302,11 @@ func (p *processor) ProcessContent(ctx context.Context, form *apimodel.AdvancedS
switch acct.StatusFormat {
case "plain":
form.Format = model.StatusFormatPlain
form.Format = apimodel.StatusFormatPlain
case "markdown":
form.Format = model.StatusFormatMarkdown
form.Format = apimodel.StatusFormatMarkdown
default:
form.Format = model.StatusFormatDefault
form.Format = apimodel.StatusFormatDefault
}
}

View file

@ -24,7 +24,7 @@ import (
"testing"
"github.com/stretchr/testify/suite"
"github.com/superseriousbusiness/gotosocial/internal/api/model"
apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model"
"github.com/superseriousbusiness/gotosocial/internal/gtsmodel"
)
@ -45,20 +45,20 @@ func (suite *UtilTestSuite) TestProcessMentions1() {
creatingAccount := suite.testAccounts["local_account_1"]
mentionedAccount := suite.testAccounts["remote_account_1"]
form := &model.AdvancedStatusCreateForm{
StatusCreateRequest: model.StatusCreateRequest{
form := &apimodel.AdvancedStatusCreateForm{
StatusCreateRequest: apimodel.StatusCreateRequest{
Status: statusText1,
MediaIDs: []string{},
Poll: nil,
InReplyToID: "",
Sensitive: false,
SpoilerText: "",
Visibility: model.VisibilityPublic,
Visibility: apimodel.VisibilityPublic,
ScheduledAt: "",
Language: "en",
Format: model.StatusFormatPlain,
Format: apimodel.StatusFormatPlain,
},
AdvancedVisibilityFlagsForm: model.AdvancedVisibilityFlagsForm{
AdvancedVisibilityFlagsForm: apimodel.AdvancedVisibilityFlagsForm{
Federated: nil,
Boostable: nil,
Replyable: nil,
@ -94,20 +94,20 @@ func (suite *UtilTestSuite) TestProcessContentFull1() {
*/
// we need to partially process the status first since processContent expects a status with some stuff already set on it
creatingAccount := suite.testAccounts["local_account_1"]
form := &model.AdvancedStatusCreateForm{
StatusCreateRequest: model.StatusCreateRequest{
form := &apimodel.AdvancedStatusCreateForm{
StatusCreateRequest: apimodel.StatusCreateRequest{
Status: statusText1,
MediaIDs: []string{},
Poll: nil,
InReplyToID: "",
Sensitive: false,
SpoilerText: "",
Visibility: model.VisibilityPublic,
Visibility: apimodel.VisibilityPublic,
ScheduledAt: "",
Language: "en",
Format: model.StatusFormatPlain,
Format: apimodel.StatusFormatPlain,
},
AdvancedVisibilityFlagsForm: model.AdvancedVisibilityFlagsForm{
AdvancedVisibilityFlagsForm: apimodel.AdvancedVisibilityFlagsForm{
Federated: nil,
Boostable: nil,
Replyable: nil,
@ -142,20 +142,20 @@ func (suite *UtilTestSuite) TestProcessContentPartial1() {
*/
// we need to partially process the status first since processContent expects a status with some stuff already set on it
creatingAccount := suite.testAccounts["local_account_1"]
form := &model.AdvancedStatusCreateForm{
StatusCreateRequest: model.StatusCreateRequest{
form := &apimodel.AdvancedStatusCreateForm{
StatusCreateRequest: apimodel.StatusCreateRequest{
Status: statusText1,
MediaIDs: []string{},
Poll: nil,
InReplyToID: "",
Sensitive: false,
SpoilerText: "",
Visibility: model.VisibilityPublic,
Visibility: apimodel.VisibilityPublic,
ScheduledAt: "",
Language: "en",
Format: model.StatusFormatPlain,
Format: apimodel.StatusFormatPlain,
},
AdvancedVisibilityFlagsForm: model.AdvancedVisibilityFlagsForm{
AdvancedVisibilityFlagsForm: apimodel.AdvancedVisibilityFlagsForm{
Federated: nil,
Boostable: nil,
Replyable: nil,
@ -184,20 +184,20 @@ func (suite *UtilTestSuite) TestProcessMentions2() {
creatingAccount := suite.testAccounts["local_account_1"]
mentionedAccount := suite.testAccounts["remote_account_1"]
form := &model.AdvancedStatusCreateForm{
StatusCreateRequest: model.StatusCreateRequest{
form := &apimodel.AdvancedStatusCreateForm{
StatusCreateRequest: apimodel.StatusCreateRequest{
Status: statusText2,
MediaIDs: []string{},
Poll: nil,
InReplyToID: "",
Sensitive: false,
SpoilerText: "",
Visibility: model.VisibilityPublic,
Visibility: apimodel.VisibilityPublic,
ScheduledAt: "",
Language: "en",
Format: model.StatusFormatPlain,
Format: apimodel.StatusFormatPlain,
},
AdvancedVisibilityFlagsForm: model.AdvancedVisibilityFlagsForm{
AdvancedVisibilityFlagsForm: apimodel.AdvancedVisibilityFlagsForm{
Federated: nil,
Boostable: nil,
Replyable: nil,
@ -233,20 +233,20 @@ func (suite *UtilTestSuite) TestProcessContentFull2() {
*/
// we need to partially process the status first since processContent expects a status with some stuff already set on it
creatingAccount := suite.testAccounts["local_account_1"]
form := &model.AdvancedStatusCreateForm{
StatusCreateRequest: model.StatusCreateRequest{
form := &apimodel.AdvancedStatusCreateForm{
StatusCreateRequest: apimodel.StatusCreateRequest{
Status: statusText2,
MediaIDs: []string{},
Poll: nil,
InReplyToID: "",
Sensitive: false,
SpoilerText: "",
Visibility: model.VisibilityPublic,
Visibility: apimodel.VisibilityPublic,
ScheduledAt: "",
Language: "en",
Format: model.StatusFormatPlain,
Format: apimodel.StatusFormatPlain,
},
AdvancedVisibilityFlagsForm: model.AdvancedVisibilityFlagsForm{
AdvancedVisibilityFlagsForm: apimodel.AdvancedVisibilityFlagsForm{
Federated: nil,
Boostable: nil,
Replyable: nil,
@ -282,20 +282,20 @@ func (suite *UtilTestSuite) TestProcessContentPartial2() {
*/
// we need to partially process the status first since processContent expects a status with some stuff already set on it
creatingAccount := suite.testAccounts["local_account_1"]
form := &model.AdvancedStatusCreateForm{
StatusCreateRequest: model.StatusCreateRequest{
form := &apimodel.AdvancedStatusCreateForm{
StatusCreateRequest: apimodel.StatusCreateRequest{
Status: statusText2,
MediaIDs: []string{},
Poll: nil,
InReplyToID: "",
Sensitive: false,
SpoilerText: "",
Visibility: model.VisibilityPublic,
Visibility: apimodel.VisibilityPublic,
ScheduledAt: "",
Language: "en",
Format: model.StatusFormatPlain,
Format: apimodel.StatusFormatPlain,
},
AdvancedVisibilityFlagsForm: model.AdvancedVisibilityFlagsForm{
AdvancedVisibilityFlagsForm: apimodel.AdvancedVisibilityFlagsForm{
Federated: nil,
Boostable: nil,
Replyable: nil,