diff options
Diffstat (limited to 'internal/processing')
-rw-r--r-- | internal/processing/federation.go | 8 | ||||
-rw-r--r-- | internal/processing/federation/federation.go | 4 | ||||
-rw-r--r-- | internal/processing/federation/getnodeinfo.go | 5 | ||||
-rw-r--r-- | internal/processing/fromclientapi_test.go | 4 | ||||
-rw-r--r-- | internal/processing/fromfederator_test.go | 8 | ||||
-rw-r--r-- | internal/processing/oauth.go | 6 | ||||
-rw-r--r-- | internal/processing/processor.go | 6 | ||||
-rw-r--r-- | internal/processing/status/create_test.go | 52 | ||||
-rw-r--r-- | internal/processing/status/util.go | 7 | ||||
-rw-r--r-- | internal/processing/status/util_test.go | 62 |
10 files changed, 84 insertions, 78 deletions
diff --git a/internal/processing/federation.go b/internal/processing/federation.go index b7b05d0fa..951bda5c2 100644 --- a/internal/processing/federation.go +++ b/internal/processing/federation.go @@ -59,12 +59,12 @@ func (p *processor) GetWebfingerAccount(ctx context.Context, requestedUsername s return p.federationProcessor.GetWebfingerAccount(ctx, requestedUsername) } -func (p *processor) GetNodeInfoRel(ctx context.Context, request *http.Request) (*apimodel.WellKnownResponse, gtserror.WithCode) { - return p.federationProcessor.GetNodeInfoRel(ctx, request) +func (p *processor) GetNodeInfoRel(ctx context.Context) (*apimodel.WellKnownResponse, gtserror.WithCode) { + return p.federationProcessor.GetNodeInfoRel(ctx) } -func (p *processor) GetNodeInfo(ctx context.Context, request *http.Request) (*apimodel.Nodeinfo, gtserror.WithCode) { - return p.federationProcessor.GetNodeInfo(ctx, request) +func (p *processor) GetNodeInfo(ctx context.Context) (*apimodel.Nodeinfo, gtserror.WithCode) { + return p.federationProcessor.GetNodeInfo(ctx) } func (p *processor) InboxPost(ctx context.Context, w http.ResponseWriter, r *http.Request) (bool, error) { diff --git a/internal/processing/federation/federation.go b/internal/processing/federation/federation.go index c79baec3c..311ca4909 100644 --- a/internal/processing/federation/federation.go +++ b/internal/processing/federation/federation.go @@ -60,10 +60,10 @@ type Processor interface { GetEmoji(ctx context.Context, requestedEmojiID string, requestURL *url.URL) (interface{}, gtserror.WithCode) // GetNodeInfoRel returns a well known response giving the path to node info. - GetNodeInfoRel(ctx context.Context, request *http.Request) (*apimodel.WellKnownResponse, gtserror.WithCode) + GetNodeInfoRel(ctx context.Context) (*apimodel.WellKnownResponse, gtserror.WithCode) // GetNodeInfo returns a node info struct in response to a node info request. - GetNodeInfo(ctx context.Context, request *http.Request) (*apimodel.Nodeinfo, gtserror.WithCode) + GetNodeInfo(ctx context.Context) (*apimodel.Nodeinfo, gtserror.WithCode) // GetOutbox returns the activitypub representation of a local user's outbox. // This contains links to PUBLIC posts made by this user. diff --git a/internal/processing/federation/getnodeinfo.go b/internal/processing/federation/getnodeinfo.go index c4aebe57d..770c411ab 100644 --- a/internal/processing/federation/getnodeinfo.go +++ b/internal/processing/federation/getnodeinfo.go @@ -21,7 +21,6 @@ package federation import ( "context" "fmt" - "net/http" apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model" "github.com/superseriousbusiness/gotosocial/internal/config" @@ -38,7 +37,7 @@ var ( nodeInfoProtocols = []string{"activitypub"} ) -func (p *processor) GetNodeInfoRel(ctx context.Context, request *http.Request) (*apimodel.WellKnownResponse, gtserror.WithCode) { +func (p *processor) GetNodeInfoRel(ctx context.Context) (*apimodel.WellKnownResponse, gtserror.WithCode) { protocol := config.GetProtocol() host := config.GetHost() @@ -52,7 +51,7 @@ func (p *processor) GetNodeInfoRel(ctx context.Context, request *http.Request) ( }, nil } -func (p *processor) GetNodeInfo(ctx context.Context, request *http.Request) (*apimodel.Nodeinfo, gtserror.WithCode) { +func (p *processor) GetNodeInfo(ctx context.Context) (*apimodel.Nodeinfo, gtserror.WithCode) { openRegistration := config.GetAccountsRegistrationOpen() softwareVersion := config.GetSoftwareVersion() diff --git a/internal/processing/fromclientapi_test.go b/internal/processing/fromclientapi_test.go index c4e06ea62..5f0670779 100644 --- a/internal/processing/fromclientapi_test.go +++ b/internal/processing/fromclientapi_test.go @@ -25,7 +25,7 @@ import ( "github.com/stretchr/testify/suite" "github.com/superseriousbusiness/gotosocial/internal/ap" - "github.com/superseriousbusiness/gotosocial/internal/api/model" + apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model" "github.com/superseriousbusiness/gotosocial/internal/db" "github.com/superseriousbusiness/gotosocial/internal/gtsmodel" "github.com/superseriousbusiness/gotosocial/internal/messages" @@ -102,7 +102,7 @@ func (suite *FromClientAPITestSuite) TestProcessStreamNewStatus() { suite.Equal(stream.EventTypeUpdate, msg.Event) suite.NotEmpty(msg.Payload) suite.EqualValues([]string{stream.TimelineHome}, msg.Stream) - statusStreamed := &model.Status{} + statusStreamed := &apimodel.Status{} err = json.Unmarshal([]byte(msg.Payload), statusStreamed) suite.NoError(err) suite.Equal("01FN4B2F88TF9676DYNXWE1WSS", statusStreamed.ID) diff --git a/internal/processing/fromfederator_test.go b/internal/processing/fromfederator_test.go index 75cef43f5..a95c150fa 100644 --- a/internal/processing/fromfederator_test.go +++ b/internal/processing/fromfederator_test.go @@ -27,7 +27,7 @@ import ( "github.com/stretchr/testify/suite" "github.com/superseriousbusiness/gotosocial/internal/ap" - "github.com/superseriousbusiness/gotosocial/internal/api/model" + apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model" "github.com/superseriousbusiness/gotosocial/internal/db" "github.com/superseriousbusiness/gotosocial/internal/gtsmodel" "github.com/superseriousbusiness/gotosocial/internal/id" @@ -171,7 +171,7 @@ func (suite *FromFederatorTestSuite) TestProcessReplyMention() { suite.Equal(stream.EventTypeNotification, msg.Event) suite.NotEmpty(msg.Payload) suite.EqualValues([]string{stream.TimelineHome}, msg.Stream) - notifStreamed := &model.Notification{} + notifStreamed := &apimodel.Notification{} err = json.Unmarshal([]byte(msg.Payload), notifStreamed) suite.NoError(err) suite.Equal("mention", notifStreamed.Type) @@ -439,7 +439,7 @@ func (suite *FromFederatorTestSuite) TestProcessFollowRequestLocked() { suite.Equal(stream.EventTypeNotification, msg.Event) suite.NotEmpty(msg.Payload) suite.EqualValues([]string{stream.TimelineHome}, msg.Stream) - notif := &model.Notification{} + notif := &apimodel.Notification{} err = json.Unmarshal([]byte(msg.Payload), notif) suite.NoError(err) suite.Equal("follow_request", notif.Type) @@ -537,7 +537,7 @@ func (suite *FromFederatorTestSuite) TestProcessFollowRequestUnlocked() { suite.Equal(stream.EventTypeNotification, msg.Event) suite.NotEmpty(msg.Payload) suite.EqualValues([]string{stream.TimelineHome}, msg.Stream) - notif := &model.Notification{} + notif := &apimodel.Notification{} err = json.Unmarshal([]byte(msg.Payload), notif) suite.NoError(err) suite.Equal("follow", notif.Type) diff --git a/internal/processing/oauth.go b/internal/processing/oauth.go index 0a36bc336..285cb4d6a 100644 --- a/internal/processing/oauth.go +++ b/internal/processing/oauth.go @@ -22,6 +22,7 @@ import ( "net/http" "github.com/superseriousbusiness/gotosocial/internal/gtserror" + "github.com/superseriousbusiness/oauth2/v4" ) func (p *processor) OAuthHandleAuthorizeRequest(w http.ResponseWriter, r *http.Request) gtserror.WithCode { @@ -33,3 +34,8 @@ func (p *processor) OAuthHandleTokenRequest(r *http.Request) (map[string]interfa // todo: some kind of metrics stuff here return p.oauthServer.HandleTokenRequest(r) } + +func (p *processor) OAuthValidateBearerToken(r *http.Request) (oauth2.TokenInfo, error) { + // todo: some kind of metrics stuff here + return p.oauthServer.ValidationBearerToken(r) +} diff --git a/internal/processing/processor.go b/internal/processing/processor.go index 3067c56b7..6d664f986 100644 --- a/internal/processing/processor.go +++ b/internal/processing/processor.go @@ -46,6 +46,7 @@ import ( "github.com/superseriousbusiness/gotosocial/internal/timeline" "github.com/superseriousbusiness/gotosocial/internal/typeutils" "github.com/superseriousbusiness/gotosocial/internal/visibility" + "github.com/superseriousbusiness/oauth2/v4" ) // Processor should be passed to api modules (see internal/apimodule/...). It is used for @@ -183,6 +184,7 @@ type Processor interface { OAuthHandleTokenRequest(r *http.Request) (map[string]interface{}, gtserror.WithCode) OAuthHandleAuthorizeRequest(w http.ResponseWriter, r *http.Request) gtserror.WithCode + OAuthValidateBearerToken(r *http.Request) (oauth2.TokenInfo, error) // SearchGet performs a search with the given params, resolving/dereferencing remotely as desired SearchGet(ctx context.Context, authed *oauth.Auth, searchQuery *apimodel.SearchQuery) (*apimodel.SearchResult, gtserror.WithCode) @@ -260,9 +262,9 @@ type Processor interface { // GetWebfingerAccount handles the GET for a webfinger resource. Most commonly, it will be used for returning account lookups. GetWebfingerAccount(ctx context.Context, requestedUsername string) (*apimodel.WellKnownResponse, gtserror.WithCode) // GetNodeInfoRel returns a well known response giving the path to node info. - GetNodeInfoRel(ctx context.Context, request *http.Request) (*apimodel.WellKnownResponse, gtserror.WithCode) + GetNodeInfoRel(ctx context.Context) (*apimodel.WellKnownResponse, gtserror.WithCode) // GetNodeInfo returns a node info struct in response to a node info request. - GetNodeInfo(ctx context.Context, request *http.Request) (*apimodel.Nodeinfo, gtserror.WithCode) + GetNodeInfo(ctx context.Context) (*apimodel.Nodeinfo, gtserror.WithCode) // InboxPost handles POST requests to a user's inbox for new activitypub messages. // // InboxPost returns true if the request was handled as an ActivityPub POST to an actor's inbox. diff --git a/internal/processing/status/create_test.go b/internal/processing/status/create_test.go index 1573dd9ae..b1f7d6a3b 100644 --- a/internal/processing/status/create_test.go +++ b/internal/processing/status/create_test.go @@ -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: ""test"", // 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, diff --git a/internal/processing/status/util.go b/internal/processing/status/util.go index ca6e5063b..9a56f37b2 100644 --- a/internal/processing/status/util.go +++ b/internal/processing/status/util.go @@ -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 } } diff --git a/internal/processing/status/util_test.go b/internal/processing/status/util_test.go index 6f551d63d..c260aaea6 100644 --- a/internal/processing/status/util_test.go +++ b/internal/processing/status/util_test.go @@ -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, |