MM-45196: Migration api4/command and app/cmd to logger context (#20730)
```release-note NONE ``` Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
5c7ed6a1b1
Коммит
f07c31c5d9
@@ -37,12 +37,12 @@ import (
|
|||||||
// AppIface is extracted from App struct and contains all it's exported methods. It's provided to allow partial interface passing and app layers creation.
|
// AppIface is extracted from App struct and contains all it's exported methods. It's provided to allow partial interface passing and app layers creation.
|
||||||
type AppIface interface {
|
type AppIface interface {
|
||||||
// @openTracingParams args
|
// @openTracingParams args
|
||||||
ExecuteCommand(c *request.Context, args *model.CommandArgs) (*model.CommandResponse, *model.AppError)
|
ExecuteCommand(c request.CTX, args *model.CommandArgs) (*model.CommandResponse, *model.AppError)
|
||||||
// @openTracingParams teamID
|
// @openTracingParams teamID
|
||||||
// previous ListCommands now ListAutocompleteCommands
|
// previous ListCommands now ListAutocompleteCommands
|
||||||
ListAutocompleteCommands(teamID string, T i18n.TranslateFunc) ([]*model.Command, *model.AppError)
|
ListAutocompleteCommands(teamID string, T i18n.TranslateFunc) ([]*model.Command, *model.AppError)
|
||||||
// @openTracingParams teamID, skipSlackParsing
|
// @openTracingParams teamID, skipSlackParsing
|
||||||
CreateCommandPost(c *request.Context, post *model.Post, teamID string, response *model.CommandResponse, skipSlackParsing bool) (*model.Post, *model.AppError)
|
CreateCommandPost(c request.CTX, post *model.Post, teamID string, response *model.CommandResponse, skipSlackParsing bool) (*model.Post, *model.AppError)
|
||||||
// AddChannelMember adds a user to a channel. It is a wrapper over AddUserToChannel.
|
// AddChannelMember adds a user to a channel. It is a wrapper over AddUserToChannel.
|
||||||
AddChannelMember(c request.CTX, userID string, channel *model.Channel, opts ChannelMemberOpts) (*model.ChannelMember, *model.AppError)
|
AddChannelMember(c request.CTX, userID string, channel *model.Channel, opts ChannelMemberOpts) (*model.ChannelMember, *model.AppError)
|
||||||
// AddCursorIdsForPostList adds NextPostId and PrevPostId as cursor to the PostList.
|
// AddCursorIdsForPostList adds NextPostId and PrevPostId as cursor to the PostList.
|
||||||
@@ -250,7 +250,7 @@ type AppIface interface {
|
|||||||
MentionsToPublicChannels(c request.CTX, message, teamID string) model.ChannelMentionMap
|
MentionsToPublicChannels(c request.CTX, message, teamID string) model.ChannelMentionMap
|
||||||
// MentionsToTeamMembers returns all the @ mentions found in message that
|
// MentionsToTeamMembers returns all the @ mentions found in message that
|
||||||
// belong to users in the specified team, linking them to their users
|
// belong to users in the specified team, linking them to their users
|
||||||
MentionsToTeamMembers(message, teamID string) model.UserMentionMap
|
MentionsToTeamMembers(c request.CTX, message, teamID string) model.UserMentionMap
|
||||||
// MoveChannel method is prone to data races if someone joins to channel during the move process. However this
|
// MoveChannel method is prone to data races if someone joins to channel during the move process. However this
|
||||||
// function is only exposed to sysadmins and the possibility of this edge case is relatively small.
|
// function is only exposed to sysadmins and the possibility of this edge case is relatively small.
|
||||||
MoveChannel(c request.CTX, team *model.Team, channel *model.Channel, user *model.User) *model.AppError
|
MoveChannel(c request.CTX, team *model.Team, channel *model.Channel, user *model.User) *model.AppError
|
||||||
@@ -374,7 +374,7 @@ type AppIface interface {
|
|||||||
// UpdateWebConnUserActivity sets the LastUserActivityAt of the hub for the given session.
|
// UpdateWebConnUserActivity sets the LastUserActivityAt of the hub for the given session.
|
||||||
UpdateWebConnUserActivity(session model.Session, activityAt int64)
|
UpdateWebConnUserActivity(session model.Session, activityAt int64)
|
||||||
// UploadFile uploads a single file in form of a completely constructed byte array for a channel.
|
// UploadFile uploads a single file in form of a completely constructed byte array for a channel.
|
||||||
UploadFile(c *request.Context, data []byte, channelID string, filename string) (*model.FileInfo, *model.AppError)
|
UploadFile(c request.CTX, data []byte, channelID string, filename string) (*model.FileInfo, *model.AppError)
|
||||||
// UploadFileX uploads a single file as specified in t. It applies the upload
|
// UploadFileX uploads a single file as specified in t. It applies the upload
|
||||||
// constraints, executes plugins and image processing logic as needed. It
|
// constraints, executes plugins and image processing logic as needed. It
|
||||||
// returns a filled-out FileInfo and an optional error. A plugin may reject the
|
// returns a filled-out FileInfo and an optional error. A plugin may reject the
|
||||||
@@ -432,10 +432,10 @@ type AppIface interface {
|
|||||||
AutocompleteUsersInChannel(teamID string, channelID string, term string, options *model.UserSearchOptions) (*model.UserAutocompleteInChannel, *model.AppError)
|
AutocompleteUsersInChannel(teamID string, channelID string, term string, options *model.UserSearchOptions) (*model.UserAutocompleteInChannel, *model.AppError)
|
||||||
AutocompleteUsersInTeam(teamID string, term string, options *model.UserSearchOptions) (*model.UserAutocompleteInTeam, *model.AppError)
|
AutocompleteUsersInTeam(teamID string, term string, options *model.UserSearchOptions) (*model.UserAutocompleteInTeam, *model.AppError)
|
||||||
BroadcastStatus(status *model.Status)
|
BroadcastStatus(status *model.Status)
|
||||||
BuildPostReactions(postID string) (*[]ReactionImportData, *model.AppError)
|
BuildPostReactions(ctx request.CTX, postID string) (*[]ReactionImportData, *model.AppError)
|
||||||
BuildPushNotificationMessage(c request.CTX, contentsConfig string, post *model.Post, user *model.User, channel *model.Channel, channelName string, senderName string, explicitMention bool, channelWideMention bool, replyToThreadType string) (*model.PushNotification, *model.AppError)
|
BuildPushNotificationMessage(c request.CTX, contentsConfig string, post *model.Post, user *model.User, channel *model.Channel, channelName string, senderName string, explicitMention bool, channelWideMention bool, replyToThreadType string) (*model.PushNotification, *model.AppError)
|
||||||
BuildSamlMetadataObject(idpMetadata []byte) (*model.SamlMetadataResponse, *model.AppError)
|
BuildSamlMetadataObject(idpMetadata []byte) (*model.SamlMetadataResponse, *model.AppError)
|
||||||
BulkExport(writer io.Writer, outPath string, opts model.BulkExportOpts) *model.AppError
|
BulkExport(ctx request.CTX, writer io.Writer, outPath string, opts model.BulkExportOpts) *model.AppError
|
||||||
BulkImport(c *request.Context, jsonlReader io.Reader, attachmentsReader *zip.Reader, dryRun bool, workers int) (*model.AppError, int)
|
BulkImport(c *request.Context, jsonlReader io.Reader, attachmentsReader *zip.Reader, dryRun bool, workers int) (*model.AppError, int)
|
||||||
BulkImportWithPath(c *request.Context, jsonlReader io.Reader, attachmentsReader *zip.Reader, dryRun bool, workers int, importPath string) (*model.AppError, int)
|
BulkImportWithPath(c *request.Context, jsonlReader io.Reader, attachmentsReader *zip.Reader, dryRun bool, workers int, importPath string) (*model.AppError, int)
|
||||||
CancelJob(jobId string) *model.AppError
|
CancelJob(jobId string) *model.AppError
|
||||||
@@ -549,7 +549,7 @@ type AppIface interface {
|
|||||||
DoPostActionWithCookie(c *request.Context, postID, actionId, userID, selectedOption string, cookie *model.PostActionCookie) (string, *model.AppError)
|
DoPostActionWithCookie(c *request.Context, postID, actionId, userID, selectedOption string, cookie *model.PostActionCookie) (string, *model.AppError)
|
||||||
DoSystemConsoleRolesCreationMigration()
|
DoSystemConsoleRolesCreationMigration()
|
||||||
DoUploadFile(c *request.Context, now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, *model.AppError)
|
DoUploadFile(c *request.Context, now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, *model.AppError)
|
||||||
DoUploadFileExpectModification(c *request.Context, now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, []byte, *model.AppError)
|
DoUploadFileExpectModification(c request.CTX, now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, []byte, *model.AppError)
|
||||||
DownloadFromURL(downloadURL string) ([]byte, error)
|
DownloadFromURL(downloadURL string) ([]byte, error)
|
||||||
EnableUserAccessToken(token *model.UserAccessToken) *model.AppError
|
EnableUserAccessToken(token *model.UserAccessToken) *model.AppError
|
||||||
EnvironmentConfig(filter func(reflect.StructField) bool) map[string]any
|
EnvironmentConfig(filter func(reflect.StructField) bool) map[string]any
|
||||||
@@ -840,8 +840,8 @@ type AppIface interface {
|
|||||||
GetWarnMetricsStatus() (map[string]*model.WarnMetricStatus, *model.AppError)
|
GetWarnMetricsStatus() (map[string]*model.WarnMetricStatus, *model.AppError)
|
||||||
HTTPService() httpservice.HTTPService
|
HTTPService() httpservice.HTTPService
|
||||||
Handle404(w http.ResponseWriter, r *http.Request)
|
Handle404(w http.ResponseWriter, r *http.Request)
|
||||||
HandleCommandResponse(c *request.Context, command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.CommandResponse, *model.AppError)
|
HandleCommandResponse(c request.CTX, command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.CommandResponse, *model.AppError)
|
||||||
HandleCommandResponsePost(c *request.Context, command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.Post, *model.AppError)
|
HandleCommandResponsePost(c request.CTX, command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.Post, *model.AppError)
|
||||||
HandleCommandWebhook(c *request.Context, hookID string, response *model.CommandResponse) *model.AppError
|
HandleCommandWebhook(c *request.Context, hookID string, response *model.CommandResponse) *model.AppError
|
||||||
HandleImages(previewPathList []string, thumbnailPathList []string, fileData [][]byte)
|
HandleImages(previewPathList []string, thumbnailPathList []string, fileData [][]byte)
|
||||||
HandleIncomingWebhook(c *request.Context, hookID string, req *model.IncomingWebhookRequest) *model.AppError
|
HandleIncomingWebhook(c *request.Context, hookID string, req *model.IncomingWebhookRequest) *model.AppError
|
||||||
@@ -1125,7 +1125,7 @@ type AppIface interface {
|
|||||||
UpdateThreadReadForUserByPost(c request.CTX, currentSessionId, userID, teamID, threadID, postID string) (*model.ThreadResponse, *model.AppError)
|
UpdateThreadReadForUserByPost(c request.CTX, currentSessionId, userID, teamID, threadID, postID string) (*model.ThreadResponse, *model.AppError)
|
||||||
UpdateThreadsReadForUser(userID, teamID string) *model.AppError
|
UpdateThreadsReadForUser(userID, teamID string) *model.AppError
|
||||||
UpdateUser(c request.CTX, user *model.User, sendNotifications bool) (*model.User, *model.AppError)
|
UpdateUser(c request.CTX, user *model.User, sendNotifications bool) (*model.User, *model.AppError)
|
||||||
UpdateUserActive(c *request.Context, userID string, active bool) *model.AppError
|
UpdateUserActive(c request.CTX, userID string, active bool) *model.AppError
|
||||||
UpdateUserAsUser(c request.CTX, user *model.User, asAdmin bool) (*model.User, *model.AppError)
|
UpdateUserAsUser(c request.CTX, user *model.User, asAdmin bool) (*model.User, *model.AppError)
|
||||||
UpdateUserAuth(userID string, userAuth *model.UserAuth) (*model.UserAuth, *model.AppError)
|
UpdateUserAuth(userID string, userAuth *model.UserAuth) (*model.UserAuth, *model.AppError)
|
||||||
UpdateUserRoles(c request.CTX, userID string, newRoles string, sendWebSocketEvent bool) (*model.User, *model.AppError)
|
UpdateUserRoles(c request.CTX, userID string, newRoles string, sendWebSocketEvent bool) (*model.User, *model.AppError)
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ var atMentionRegexp = regexp.MustCompile(`\B@[[:alnum:]][[:alnum:]\.\-_:]*`)
|
|||||||
type CommandProvider interface {
|
type CommandProvider interface {
|
||||||
GetTrigger() string
|
GetTrigger() string
|
||||||
GetCommand(a *App, T i18n.TranslateFunc) *model.Command
|
GetCommand(a *App, T i18n.TranslateFunc) *model.Command
|
||||||
DoCommand(a *App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse
|
DoCommand(a *App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse
|
||||||
}
|
}
|
||||||
|
|
||||||
var commandProviders = make(map[string]CommandProvider)
|
var commandProviders = make(map[string]CommandProvider)
|
||||||
@@ -52,7 +52,7 @@ func GetCommandProvider(name string) CommandProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// @openTracingParams teamID, skipSlackParsing
|
// @openTracingParams teamID, skipSlackParsing
|
||||||
func (a *App) CreateCommandPost(c *request.Context, post *model.Post, teamID string, response *model.CommandResponse, skipSlackParsing bool) (*model.Post, *model.AppError) {
|
func (a *App) CreateCommandPost(c request.CTX, post *model.Post, teamID string, response *model.CommandResponse, skipSlackParsing bool) (*model.Post, *model.AppError) {
|
||||||
if skipSlackParsing {
|
if skipSlackParsing {
|
||||||
post.Message = response.Text
|
post.Message = response.Text
|
||||||
} else {
|
} else {
|
||||||
@@ -180,7 +180,7 @@ func (a *App) ListAllCommands(teamID string, T i18n.TranslateFunc) ([]*model.Com
|
|||||||
}
|
}
|
||||||
|
|
||||||
// @openTracingParams args
|
// @openTracingParams args
|
||||||
func (a *App) ExecuteCommand(c *request.Context, args *model.CommandArgs) (*model.CommandResponse, *model.AppError) {
|
func (a *App) ExecuteCommand(c request.CTX, args *model.CommandArgs) (*model.CommandResponse, *model.AppError) {
|
||||||
trigger := ""
|
trigger := ""
|
||||||
message := ""
|
message := ""
|
||||||
index := strings.IndexFunc(args.Command, unicode.IsSpace)
|
index := strings.IndexFunc(args.Command, unicode.IsSpace)
|
||||||
@@ -198,7 +198,7 @@ func (a *App) ExecuteCommand(c *request.Context, args *model.CommandArgs) (*mode
|
|||||||
|
|
||||||
clientTriggerId, triggerId, appErr := model.GenerateTriggerId(args.UserId, a.AsymmetricSigningKey())
|
clientTriggerId, triggerId, appErr := model.GenerateTriggerId(args.UserId, a.AsymmetricSigningKey())
|
||||||
if appErr != nil {
|
if appErr != nil {
|
||||||
mlog.Warn("error occurred in generating trigger Id for a user ", mlog.Err(appErr))
|
c.Logger().Warn("error occurred in generating trigger Id for a user ", mlog.Err(appErr))
|
||||||
}
|
}
|
||||||
|
|
||||||
args.TriggerId = triggerId
|
args.TriggerId = triggerId
|
||||||
@@ -235,7 +235,7 @@ func (a *App) ExecuteCommand(c *request.Context, args *model.CommandArgs) (*mode
|
|||||||
|
|
||||||
// MentionsToTeamMembers returns all the @ mentions found in message that
|
// MentionsToTeamMembers returns all the @ mentions found in message that
|
||||||
// belong to users in the specified team, linking them to their users
|
// belong to users in the specified team, linking them to their users
|
||||||
func (a *App) MentionsToTeamMembers(message, teamID string) model.UserMentionMap {
|
func (a *App) MentionsToTeamMembers(c request.CTX, message, teamID string) model.UserMentionMap {
|
||||||
type mentionMapItem struct {
|
type mentionMapItem struct {
|
||||||
Name string
|
Name string
|
||||||
Id string
|
Id string
|
||||||
@@ -253,7 +253,7 @@ func (a *App) MentionsToTeamMembers(message, teamID string) model.UserMentionMap
|
|||||||
|
|
||||||
var nfErr *store.ErrNotFound
|
var nfErr *store.ErrNotFound
|
||||||
if nErr != nil && !errors.As(nErr, &nfErr) {
|
if nErr != nil && !errors.As(nErr, &nfErr) {
|
||||||
mlog.Warn("Failed to retrieve user @"+mention, mlog.Err(nErr))
|
c.Logger().Warn("Failed to retrieve user @"+mention, mlog.Err(nErr))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -347,7 +347,7 @@ func (a *App) MentionsToPublicChannels(c request.CTX, message, teamID string) mo
|
|||||||
|
|
||||||
// tryExecuteBuiltInCommand attempts to run a built in command based on the given arguments. If no such command can be
|
// tryExecuteBuiltInCommand attempts to run a built in command based on the given arguments. If no such command can be
|
||||||
// found, returns nil for all arguments.
|
// found, returns nil for all arguments.
|
||||||
func (a *App) tryExecuteBuiltInCommand(c *request.Context, args *model.CommandArgs, trigger string, message string) (*model.Command, *model.CommandResponse) {
|
func (a *App) tryExecuteBuiltInCommand(c request.CTX, args *model.CommandArgs, trigger string, message string) (*model.Command, *model.CommandResponse) {
|
||||||
provider := GetCommandProvider(trigger)
|
provider := GetCommandProvider(trigger)
|
||||||
if provider == nil {
|
if provider == nil {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
@@ -443,7 +443,7 @@ func (a *App) tryExecuteCustomCommand(c request.CTX, args *model.CommandArgs, tr
|
|||||||
return nil, nil, nil
|
return nil, nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
mlog.Debug("Executing command", mlog.String("command", trigger), mlog.String("user_id", args.UserId))
|
c.Logger().Debug("Executing command", mlog.String("command", trigger), mlog.String("user_id", args.UserId))
|
||||||
|
|
||||||
p := url.Values{}
|
p := url.Values{}
|
||||||
p.Set("token", cmd.Token)
|
p.Set("token", cmd.Token)
|
||||||
@@ -462,7 +462,7 @@ func (a *App) tryExecuteCustomCommand(c request.CTX, args *model.CommandArgs, tr
|
|||||||
|
|
||||||
p.Set("trigger_id", args.TriggerId)
|
p.Set("trigger_id", args.TriggerId)
|
||||||
|
|
||||||
userMentionMap := a.MentionsToTeamMembers(message, team.Id)
|
userMentionMap := a.MentionsToTeamMembers(c, message, team.Id)
|
||||||
for key, values := range userMentionMap.ToURLValues() {
|
for key, values := range userMentionMap.ToURLValues() {
|
||||||
p[key] = values
|
p[key] = values
|
||||||
}
|
}
|
||||||
@@ -536,7 +536,7 @@ func (a *App) DoCommandRequest(cmd *model.Command, p url.Values) (*model.Command
|
|||||||
return cmd, response, nil
|
return cmd, response, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *App) HandleCommandResponse(c *request.Context, command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.CommandResponse, *model.AppError) {
|
func (a *App) HandleCommandResponse(c request.CTX, command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.CommandResponse, *model.AppError) {
|
||||||
trigger := ""
|
trigger := ""
|
||||||
if args.Command != "" {
|
if args.Command != "" {
|
||||||
parts := strings.Split(args.Command, " ")
|
parts := strings.Split(args.Command, " ")
|
||||||
@@ -570,7 +570,7 @@ func (a *App) HandleCommandResponse(c *request.Context, command *model.Command,
|
|||||||
return response, nil
|
return response, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *App) HandleCommandResponsePost(c *request.Context, command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.Post, *model.AppError) {
|
func (a *App) HandleCommandResponsePost(c request.CTX, command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.Post, *model.AppError) {
|
||||||
post := &model.Post{}
|
post := &model.Post{}
|
||||||
post.ChannelId = args.ChannelId
|
post.ChannelId = args.ChannelId
|
||||||
post.RootId = args.RootId
|
post.RootId = args.RootId
|
||||||
|
|||||||
@@ -659,7 +659,7 @@ func (p *testCommandProvider) GetCommand(a *App, T i18n.TranslateFunc) *model.Co
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *testCommandProvider) DoCommand(a *App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (p *testCommandProvider) DoCommand(a *App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
return &model.CommandResponse{
|
return &model.CommandResponse{
|
||||||
Text: "I do nothing!",
|
Text: "I do nothing!",
|
||||||
ResponseType: model.CommandResponseTypeEphemeral,
|
ResponseType: model.CommandResponseTypeEphemeral,
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import (
|
|||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
|
|
||||||
|
"github.com/mattermost/mattermost-server/v6/app/request"
|
||||||
"github.com/mattermost/mattermost-server/v6/model"
|
"github.com/mattermost/mattermost-server/v6/model"
|
||||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||||
"github.com/mattermost/mattermost-server/v6/store"
|
"github.com/mattermost/mattermost-server/v6/store"
|
||||||
@@ -61,7 +62,7 @@ var exportablePreferences = map[ComparablePreference]string{{
|
|||||||
}: "EmailInterval",
|
}: "EmailInterval",
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *App) BulkExport(writer io.Writer, outPath string, opts model.BulkExportOpts) *model.AppError {
|
func (a *App) BulkExport(ctx request.CTX, writer io.Writer, outPath string, opts model.BulkExportOpts) *model.AppError {
|
||||||
var zipWr *zip.Writer
|
var zipWr *zip.Writer
|
||||||
if opts.CreateArchive {
|
if opts.CreateArchive {
|
||||||
var err error
|
var err error
|
||||||
@@ -74,52 +75,52 @@ func (a *App) BulkExport(writer io.Writer, outPath string, opts model.BulkExport
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mlog.Info("Bulk export: exporting version")
|
ctx.Logger().Info("Bulk export: exporting version")
|
||||||
if err := a.exportVersion(writer); err != nil {
|
if err := a.exportVersion(writer); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
mlog.Info("Bulk export: exporting teams")
|
ctx.Logger().Info("Bulk export: exporting teams")
|
||||||
teamNames, err := a.exportAllTeams(writer)
|
teamNames, err := a.exportAllTeams(writer)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
mlog.Info("Bulk export: exporting channels")
|
ctx.Logger().Info("Bulk export: exporting channels")
|
||||||
if err = a.exportAllChannels(writer, teamNames); err != nil {
|
if err = a.exportAllChannels(writer, teamNames); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
mlog.Info("Bulk export: exporting users")
|
ctx.Logger().Info("Bulk export: exporting users")
|
||||||
if err = a.exportAllUsers(writer); err != nil {
|
if err = a.exportAllUsers(writer); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
mlog.Info("Bulk export: exporting posts")
|
ctx.Logger().Info("Bulk export: exporting posts")
|
||||||
attachments, err := a.exportAllPosts(writer, opts.IncludeAttachments)
|
attachments, err := a.exportAllPosts(ctx, writer, opts.IncludeAttachments)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
mlog.Info("Bulk export: exporting emoji")
|
ctx.Logger().Info("Bulk export: exporting emoji")
|
||||||
emojiPaths, err := a.exportCustomEmoji(writer, outPath, "exported_emoji", !opts.CreateArchive)
|
emojiPaths, err := a.exportCustomEmoji(writer, outPath, "exported_emoji", !opts.CreateArchive)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
mlog.Info("Bulk export: exporting direct channels")
|
ctx.Logger().Info("Bulk export: exporting direct channels")
|
||||||
if err = a.exportAllDirectChannels(writer); err != nil {
|
if err = a.exportAllDirectChannels(writer); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
mlog.Info("Bulk export: exporting direct posts")
|
ctx.Logger().Info("Bulk export: exporting direct posts")
|
||||||
directAttachments, err := a.exportAllDirectPosts(writer, opts.IncludeAttachments)
|
directAttachments, err := a.exportAllDirectPosts(ctx, writer, opts.IncludeAttachments)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if opts.IncludeAttachments {
|
if opts.IncludeAttachments {
|
||||||
mlog.Info("Bulk export: exporting file attachments")
|
ctx.Logger().Info("Bulk export: exporting file attachments")
|
||||||
for _, attachment := range attachments {
|
for _, attachment := range attachments {
|
||||||
if err := a.exportFile(outPath, *attachment.Path, zipWr); err != nil {
|
if err := a.exportFile(outPath, *attachment.Path, zipWr); err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -383,7 +384,7 @@ func (a *App) buildUserNotifyProps(notifyProps model.StringMap) *UserNotifyProps
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *App) exportAllPosts(writer io.Writer, withAttachments bool) ([]AttachmentImportData, *model.AppError) {
|
func (a *App) exportAllPosts(ctx request.CTX, writer io.Writer, withAttachments bool) ([]AttachmentImportData, *model.AppError) {
|
||||||
var attachments []AttachmentImportData
|
var attachments []AttachmentImportData
|
||||||
afterId := strings.Repeat("0", 26)
|
afterId := strings.Repeat("0", 26)
|
||||||
|
|
||||||
@@ -407,7 +408,7 @@ func (a *App) exportAllPosts(writer io.Writer, withAttachments bool) ([]Attachme
|
|||||||
|
|
||||||
postLine := ImportLineForPost(post)
|
postLine := ImportLineForPost(post)
|
||||||
|
|
||||||
replies, replyAttachments, err := a.buildPostReplies(post.Id, withAttachments)
|
replies, replyAttachments, err := a.buildPostReplies(ctx, post.Id, withAttachments)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -419,7 +420,7 @@ func (a *App) exportAllPosts(writer io.Writer, withAttachments bool) ([]Attachme
|
|||||||
postLine.Post.Replies = &replies
|
postLine.Post.Replies = &replies
|
||||||
postLine.Post.Reactions = &[]ReactionImportData{}
|
postLine.Post.Reactions = &[]ReactionImportData{}
|
||||||
if post.HasReactions {
|
if post.HasReactions {
|
||||||
postLine.Post.Reactions, err = a.BuildPostReactions(post.Id)
|
postLine.Post.Reactions, err = a.BuildPostReactions(ctx, post.Id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -444,7 +445,7 @@ func (a *App) exportAllPosts(writer io.Writer, withAttachments bool) ([]Attachme
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *App) buildPostReplies(postID string, withAttachments bool) ([]ReplyImportData, []AttachmentImportData, *model.AppError) {
|
func (a *App) buildPostReplies(ctx request.CTX, postID string, withAttachments bool) ([]ReplyImportData, []AttachmentImportData, *model.AppError) {
|
||||||
var replies []ReplyImportData
|
var replies []ReplyImportData
|
||||||
var attachments []AttachmentImportData
|
var attachments []AttachmentImportData
|
||||||
|
|
||||||
@@ -457,7 +458,7 @@ func (a *App) buildPostReplies(postID string, withAttachments bool) ([]ReplyImpo
|
|||||||
replyImportObject := ImportReplyFromPost(reply)
|
replyImportObject := ImportReplyFromPost(reply)
|
||||||
if reply.HasReactions {
|
if reply.HasReactions {
|
||||||
var appErr *model.AppError
|
var appErr *model.AppError
|
||||||
replyImportObject.Reactions, appErr = a.BuildPostReactions(reply.Id)
|
replyImportObject.Reactions, appErr = a.BuildPostReactions(ctx, reply.Id)
|
||||||
if appErr != nil {
|
if appErr != nil {
|
||||||
return nil, nil, appErr
|
return nil, nil, appErr
|
||||||
}
|
}
|
||||||
@@ -479,7 +480,7 @@ func (a *App) buildPostReplies(postID string, withAttachments bool) ([]ReplyImpo
|
|||||||
return replies, attachments, nil
|
return replies, attachments, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *App) BuildPostReactions(postID string) (*[]ReactionImportData, *model.AppError) {
|
func (a *App) BuildPostReactions(ctx request.CTX, postID string) (*[]ReactionImportData, *model.AppError) {
|
||||||
var reactionsOfPost []ReactionImportData
|
var reactionsOfPost []ReactionImportData
|
||||||
|
|
||||||
reactions, nErr := a.Srv().Store.Reaction().GetForPost(postID, true)
|
reactions, nErr := a.Srv().Store.Reaction().GetForPost(postID, true)
|
||||||
@@ -492,7 +493,7 @@ func (a *App) BuildPostReactions(postID string) (*[]ReactionImportData, *model.A
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
var nfErr *store.ErrNotFound
|
var nfErr *store.ErrNotFound
|
||||||
if errors.As(err, &nfErr) { // this is a valid case, the user that reacted might've been deleted by now
|
if errors.As(err, &nfErr) { // this is a valid case, the user that reacted might've been deleted by now
|
||||||
mlog.Info("Skipping reactions by user since the entity doesn't exist anymore", mlog.String("user_id", reaction.UserId))
|
ctx.Logger().Info("Skipping reactions by user since the entity doesn't exist anymore", mlog.String("user_id", reaction.UserId))
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
return nil, model.NewAppError("BuildPostReactions", "app.user.get.app_error", nil, err.Error(), http.StatusInternalServerError)
|
return nil, model.NewAppError("BuildPostReactions", "app.user.get.app_error", nil, err.Error(), http.StatusInternalServerError)
|
||||||
@@ -634,7 +635,7 @@ func (a *App) exportAllDirectChannels(writer io.Writer) *model.AppError {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *App) exportAllDirectPosts(writer io.Writer, withAttachments bool) ([]AttachmentImportData, *model.AppError) {
|
func (a *App) exportAllDirectPosts(ctx request.CTX, writer io.Writer, withAttachments bool) ([]AttachmentImportData, *model.AppError) {
|
||||||
var attachments []AttachmentImportData
|
var attachments []AttachmentImportData
|
||||||
afterId := strings.Repeat("0", 26)
|
afterId := strings.Repeat("0", 26)
|
||||||
for {
|
for {
|
||||||
@@ -670,7 +671,7 @@ func (a *App) exportAllDirectPosts(writer io.Writer, withAttachments bool) ([]At
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Do the Replies.
|
// Do the Replies.
|
||||||
replies, replyAttachments, err := a.buildPostReplies(post.Id, withAttachments)
|
replies, replyAttachments, err := a.buildPostReplies(ctx, post.Id, withAttachments)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ func TestReactionsOfPost(t *testing.T) {
|
|||||||
|
|
||||||
th.App.SaveReactionForPost(th.Context, &reactionObject)
|
th.App.SaveReactionForPost(th.Context, &reactionObject)
|
||||||
th.App.SaveReactionForPost(th.Context, &reactionObjectDeleted)
|
th.App.SaveReactionForPost(th.Context, &reactionObjectDeleted)
|
||||||
reactionsOfPost, err := th.App.BuildPostReactions(post.Id)
|
reactionsOfPost, err := th.App.BuildPostReactions(th.Context, post.Id)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
|
|
||||||
assert.Equal(t, reactionObject.EmojiName, *(*reactionsOfPost)[0].EmojiName)
|
assert.Equal(t, reactionObject.EmojiName, *(*reactionsOfPost)[0].EmojiName)
|
||||||
@@ -179,7 +179,7 @@ func TestExportAllUsers(t *testing.T) {
|
|||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
|
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
err = th1.App.BulkExport(&b, "somePath", model.BulkExportOpts{})
|
err = th1.App.BulkExport(th1.Context, &b, "somePath", model.BulkExportOpts{})
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
|
|
||||||
th2 := Setup(t)
|
th2 := Setup(t)
|
||||||
@@ -227,7 +227,7 @@ func TestExportDMChannel(t *testing.T) {
|
|||||||
th1.CreateDmChannel(th1.BasicUser2)
|
th1.CreateDmChannel(th1.BasicUser2)
|
||||||
|
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
err := th1.App.BulkExport(&b, "somePath", model.BulkExportOpts{})
|
err := th1.App.BulkExport(th1.Context, &b, "somePath", model.BulkExportOpts{})
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
|
|
||||||
channels, nErr := th1.App.Srv().Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000")
|
channels, nErr := th1.App.Srv().Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000")
|
||||||
@@ -268,7 +268,7 @@ func TestExportDMChannel(t *testing.T) {
|
|||||||
th1.App.PermanentDeleteUser(th1.Context, th1.BasicUser)
|
th1.App.PermanentDeleteUser(th1.Context, th1.BasicUser)
|
||||||
|
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
err := th1.App.BulkExport(&b, "somePath", model.BulkExportOpts{})
|
err := th1.App.BulkExport(th1.Context, &b, "somePath", model.BulkExportOpts{})
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
|
|
||||||
th2 := Setup(t).InitBasic()
|
th2 := Setup(t).InitBasic()
|
||||||
@@ -292,7 +292,7 @@ func TestExportDMChannelToSelf(t *testing.T) {
|
|||||||
th1.CreateDmChannel(th1.BasicUser)
|
th1.CreateDmChannel(th1.BasicUser)
|
||||||
|
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
err := th1.App.BulkExport(&b, "somePath", model.BulkExportOpts{})
|
err := th1.App.BulkExport(th1.Context, &b, "somePath", model.BulkExportOpts{})
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
|
|
||||||
channels, nErr := th1.App.Srv().Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000")
|
channels, nErr := th1.App.Srv().Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000")
|
||||||
@@ -330,7 +330,7 @@ func TestExportGMChannel(t *testing.T) {
|
|||||||
th1.CreateGroupChannel(th1.Context, user1, user2)
|
th1.CreateGroupChannel(th1.Context, user1, user2)
|
||||||
|
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
err := th1.App.BulkExport(&b, "somePath", model.BulkExportOpts{})
|
err := th1.App.BulkExport(th1.Context, &b, "somePath", model.BulkExportOpts{})
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
|
|
||||||
channels, nErr := th1.App.Srv().Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000")
|
channels, nErr := th1.App.Srv().Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000")
|
||||||
@@ -362,7 +362,7 @@ func TestExportGMandDMChannels(t *testing.T) {
|
|||||||
th1.CreateGroupChannel(th1.Context, user1, user2)
|
th1.CreateGroupChannel(th1.Context, user1, user2)
|
||||||
|
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
err := th1.App.BulkExport(&b, "somePath", model.BulkExportOpts{})
|
err := th1.App.BulkExport(th1.Context, &b, "somePath", model.BulkExportOpts{})
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
|
|
||||||
channels, nErr := th1.App.Srv().Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000")
|
channels, nErr := th1.App.Srv().Store.Channel().GetAllDirectChannelsForExportAfter(1000, "00000000")
|
||||||
@@ -445,7 +445,7 @@ func TestExportDMandGMPost(t *testing.T) {
|
|||||||
assert.Equal(t, 4, len(posts))
|
assert.Equal(t, 4, len(posts))
|
||||||
|
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
appErr := th1.App.BulkExport(&b, "somePath", model.BulkExportOpts{})
|
appErr := th1.App.BulkExport(th1.Context, &b, "somePath", model.BulkExportOpts{})
|
||||||
require.Nil(t, appErr)
|
require.Nil(t, appErr)
|
||||||
|
|
||||||
th1.TearDown()
|
th1.TearDown()
|
||||||
@@ -520,7 +520,7 @@ func TestExportPostWithProps(t *testing.T) {
|
|||||||
require.NotEmpty(t, posts[1].Props)
|
require.NotEmpty(t, posts[1].Props)
|
||||||
|
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
appErr := th1.App.BulkExport(&b, "somePath", model.BulkExportOpts{})
|
appErr := th1.App.BulkExport(th1.Context, &b, "somePath", model.BulkExportOpts{})
|
||||||
require.Nil(t, appErr)
|
require.Nil(t, appErr)
|
||||||
|
|
||||||
th1.TearDown()
|
th1.TearDown()
|
||||||
@@ -558,7 +558,7 @@ func TestExportDMPostWithSelf(t *testing.T) {
|
|||||||
th1.CreatePost(dmChannel)
|
th1.CreatePost(dmChannel)
|
||||||
|
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
err := th1.App.BulkExport(&b, "somePath", model.BulkExportOpts{})
|
err := th1.App.BulkExport(th1.Context, &b, "somePath", model.BulkExportOpts{})
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
|
|
||||||
posts, nErr := th1.App.Srv().Store.Post().GetDirectPostParentsForExportAfter(1000, "0000000")
|
posts, nErr := th1.App.Srv().Store.Post().GetDirectPostParentsForExportAfter(1000, "0000000")
|
||||||
@@ -626,7 +626,7 @@ func TestBulkExport(t *testing.T) {
|
|||||||
IncludeAttachments: true,
|
IncludeAttachments: true,
|
||||||
CreateArchive: true,
|
CreateArchive: true,
|
||||||
}
|
}
|
||||||
appErr = th.App.BulkExport(exportFile, dir, opts)
|
appErr = th.App.BulkExport(th.Context, exportFile, dir, opts)
|
||||||
require.Nil(t, appErr)
|
require.Nil(t, appErr)
|
||||||
|
|
||||||
th.TearDown()
|
th.TearDown()
|
||||||
@@ -663,7 +663,7 @@ func TestBuildPostReplies(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
t.Run("basic post", func(t *testing.T) {
|
t.Run("basic post", func(t *testing.T) {
|
||||||
data, attachments, err := th.App.buildPostReplies(th.BasicPost.Id, true)
|
data, attachments, err := th.App.buildPostReplies(th.Context, th.BasicPost.Id, true)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
require.Empty(t, data)
|
require.Empty(t, data)
|
||||||
require.Empty(t, attachments)
|
require.Empty(t, attachments)
|
||||||
@@ -671,7 +671,7 @@ func TestBuildPostReplies(t *testing.T) {
|
|||||||
|
|
||||||
t.Run("root post with attachments and no replies", func(t *testing.T) {
|
t.Run("root post with attachments and no replies", func(t *testing.T) {
|
||||||
post := createPostWithAttachments(th, 5, "")
|
post := createPostWithAttachments(th, 5, "")
|
||||||
data, attachments, err := th.App.buildPostReplies(post.Id, true)
|
data, attachments, err := th.App.buildPostReplies(th.Context, post.Id, true)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
require.Empty(t, data)
|
require.Empty(t, data)
|
||||||
require.Empty(t, attachments)
|
require.Empty(t, attachments)
|
||||||
@@ -680,7 +680,7 @@ func TestBuildPostReplies(t *testing.T) {
|
|||||||
t.Run("root post with attachments and a reply", func(t *testing.T) {
|
t.Run("root post with attachments and a reply", func(t *testing.T) {
|
||||||
post := createPostWithAttachments(th, 5, "")
|
post := createPostWithAttachments(th, 5, "")
|
||||||
createPostWithAttachments(th, 0, post.Id)
|
createPostWithAttachments(th, 0, post.Id)
|
||||||
data, attachments, err := th.App.buildPostReplies(post.Id, true)
|
data, attachments, err := th.App.buildPostReplies(th.Context, post.Id, true)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
require.Len(t, data, 1)
|
require.Len(t, data, 1)
|
||||||
require.Empty(t, attachments)
|
require.Empty(t, attachments)
|
||||||
@@ -690,7 +690,7 @@ func TestBuildPostReplies(t *testing.T) {
|
|||||||
post := createPostWithAttachments(th, 5, "")
|
post := createPostWithAttachments(th, 5, "")
|
||||||
reply1 := createPostWithAttachments(th, 2, post.Id)
|
reply1 := createPostWithAttachments(th, 2, post.Id)
|
||||||
reply2 := createPostWithAttachments(th, 3, post.Id)
|
reply2 := createPostWithAttachments(th, 3, post.Id)
|
||||||
data, attachments, err := th.App.buildPostReplies(post.Id, true)
|
data, attachments, err := th.App.buildPostReplies(th.Context, post.Id, true)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
require.Len(t, data, 2)
|
require.Len(t, data, 2)
|
||||||
require.Len(t, attachments, 5)
|
require.Len(t, attachments, 5)
|
||||||
@@ -717,7 +717,7 @@ func TestExportDeletedTeams(t *testing.T) {
|
|||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
|
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
err = th1.App.BulkExport(&b, "somePath", model.BulkExportOpts{})
|
err = th1.App.BulkExport(th1.Context, &b, "somePath", model.BulkExportOpts{})
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
|
|
||||||
th2 := Setup(t)
|
th2 := Setup(t)
|
||||||
|
|||||||
@@ -524,7 +524,7 @@ func (a *App) UploadFiles(c *request.Context, teamID string, channelID string, u
|
|||||||
}
|
}
|
||||||
|
|
||||||
// UploadFile uploads a single file in form of a completely constructed byte array for a channel.
|
// UploadFile uploads a single file in form of a completely constructed byte array for a channel.
|
||||||
func (a *App) UploadFile(c *request.Context, data []byte, channelID string, filename string) (*model.FileInfo, *model.AppError) {
|
func (a *App) UploadFile(c request.CTX, data []byte, channelID string, filename string) (*model.FileInfo, *model.AppError) {
|
||||||
_, err := a.GetChannel(c, channelID)
|
_, err := a.GetChannel(c, channelID)
|
||||||
if err != nil && channelID != "" {
|
if err != nil && channelID != "" {
|
||||||
return nil, model.NewAppError("UploadFile", "api.file.upload_file.incorrect_channelId.app_error",
|
return nil, model.NewAppError("UploadFile", "api.file.upload_file.incorrect_channelId.app_error",
|
||||||
@@ -924,7 +924,7 @@ func (t UploadFileTask) newAppError(id string, httpStatus int, extra ...any) *mo
|
|||||||
return model.NewAppError("uploadFileTask", id, params, "", httpStatus)
|
return model.NewAppError("uploadFileTask", id, params, "", httpStatus)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *App) DoUploadFileExpectModification(c *request.Context, now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, []byte, *model.AppError) {
|
func (a *App) DoUploadFileExpectModification(c request.CTX, now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, []byte, *model.AppError) {
|
||||||
filename := filepath.Base(rawFilename)
|
filename := filepath.Base(rawFilename)
|
||||||
teamID := filepath.Base(rawTeamId)
|
teamID := filepath.Base(rawTeamId)
|
||||||
channelID := filepath.Base(rawChannelId)
|
channelID := filepath.Base(rawChannelId)
|
||||||
|
|||||||
@@ -951,7 +951,7 @@ func (a *OpenTracingAppLayer) BroadcastStatus(status *model.Status) {
|
|||||||
a.app.BroadcastStatus(status)
|
a.app.BroadcastStatus(status)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *OpenTracingAppLayer) BuildPostReactions(postID string) (*[]app.ReactionImportData, *model.AppError) {
|
func (a *OpenTracingAppLayer) BuildPostReactions(ctx request.CTX, postID string) (*[]app.ReactionImportData, *model.AppError) {
|
||||||
origCtx := a.ctx
|
origCtx := a.ctx
|
||||||
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.BuildPostReactions")
|
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.BuildPostReactions")
|
||||||
|
|
||||||
@@ -963,7 +963,7 @@ func (a *OpenTracingAppLayer) BuildPostReactions(postID string) (*[]app.Reaction
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
defer span.Finish()
|
defer span.Finish()
|
||||||
resultVar0, resultVar1 := a.app.BuildPostReactions(postID)
|
resultVar0, resultVar1 := a.app.BuildPostReactions(ctx, postID)
|
||||||
|
|
||||||
if resultVar1 != nil {
|
if resultVar1 != nil {
|
||||||
span.LogFields(spanlog.Error(resultVar1))
|
span.LogFields(spanlog.Error(resultVar1))
|
||||||
@@ -1017,7 +1017,7 @@ func (a *OpenTracingAppLayer) BuildSamlMetadataObject(idpMetadata []byte) (*mode
|
|||||||
return resultVar0, resultVar1
|
return resultVar0, resultVar1
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *OpenTracingAppLayer) BulkExport(writer io.Writer, outPath string, opts model.BulkExportOpts) *model.AppError {
|
func (a *OpenTracingAppLayer) BulkExport(ctx request.CTX, writer io.Writer, outPath string, opts model.BulkExportOpts) *model.AppError {
|
||||||
origCtx := a.ctx
|
origCtx := a.ctx
|
||||||
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.BulkExport")
|
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.BulkExport")
|
||||||
|
|
||||||
@@ -1029,7 +1029,7 @@ func (a *OpenTracingAppLayer) BulkExport(writer io.Writer, outPath string, opts
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
defer span.Finish()
|
defer span.Finish()
|
||||||
resultVar0 := a.app.BulkExport(writer, outPath, opts)
|
resultVar0 := a.app.BulkExport(ctx, writer, outPath, opts)
|
||||||
|
|
||||||
if resultVar0 != nil {
|
if resultVar0 != nil {
|
||||||
span.LogFields(spanlog.Error(resultVar0))
|
span.LogFields(spanlog.Error(resultVar0))
|
||||||
@@ -1967,7 +1967,7 @@ func (a *OpenTracingAppLayer) CreateCommand(cmd *model.Command) (*model.Command,
|
|||||||
return resultVar0, resultVar1
|
return resultVar0, resultVar1
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *OpenTracingAppLayer) CreateCommandPost(c *request.Context, post *model.Post, teamID string, response *model.CommandResponse, skipSlackParsing bool) (*model.Post, *model.AppError) {
|
func (a *OpenTracingAppLayer) CreateCommandPost(c request.CTX, post *model.Post, teamID string, response *model.CommandResponse, skipSlackParsing bool) (*model.Post, *model.AppError) {
|
||||||
origCtx := a.ctx
|
origCtx := a.ctx
|
||||||
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.CreateCommandPost")
|
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.CreateCommandPost")
|
||||||
|
|
||||||
@@ -3838,7 +3838,7 @@ func (a *OpenTracingAppLayer) DoUploadFile(c *request.Context, now time.Time, ra
|
|||||||
return resultVar0, resultVar1
|
return resultVar0, resultVar1
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *OpenTracingAppLayer) DoUploadFileExpectModification(c *request.Context, now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, []byte, *model.AppError) {
|
func (a *OpenTracingAppLayer) DoUploadFileExpectModification(c request.CTX, now time.Time, rawTeamId string, rawChannelId string, rawUserId string, rawFilename string, data []byte) (*model.FileInfo, []byte, *model.AppError) {
|
||||||
origCtx := a.ctx
|
origCtx := a.ctx
|
||||||
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.DoUploadFileExpectModification")
|
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.DoUploadFileExpectModification")
|
||||||
|
|
||||||
@@ -3987,7 +3987,7 @@ func (a *OpenTracingAppLayer) EnvironmentConfig(filter func(reflect.StructField)
|
|||||||
return resultVar0
|
return resultVar0
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *OpenTracingAppLayer) ExecuteCommand(c *request.Context, args *model.CommandArgs) (*model.CommandResponse, *model.AppError) {
|
func (a *OpenTracingAppLayer) ExecuteCommand(c request.CTX, args *model.CommandArgs) (*model.CommandResponse, *model.AppError) {
|
||||||
origCtx := a.ctx
|
origCtx := a.ctx
|
||||||
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.ExecuteCommand")
|
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.ExecuteCommand")
|
||||||
|
|
||||||
@@ -10975,7 +10975,7 @@ func (a *OpenTracingAppLayer) Handle404(w http.ResponseWriter, r *http.Request)
|
|||||||
a.app.Handle404(w, r)
|
a.app.Handle404(w, r)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *OpenTracingAppLayer) HandleCommandResponse(c *request.Context, command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.CommandResponse, *model.AppError) {
|
func (a *OpenTracingAppLayer) HandleCommandResponse(c request.CTX, command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.CommandResponse, *model.AppError) {
|
||||||
origCtx := a.ctx
|
origCtx := a.ctx
|
||||||
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.HandleCommandResponse")
|
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.HandleCommandResponse")
|
||||||
|
|
||||||
@@ -10997,7 +10997,7 @@ func (a *OpenTracingAppLayer) HandleCommandResponse(c *request.Context, command
|
|||||||
return resultVar0, resultVar1
|
return resultVar0, resultVar1
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *OpenTracingAppLayer) HandleCommandResponsePost(c *request.Context, command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.Post, *model.AppError) {
|
func (a *OpenTracingAppLayer) HandleCommandResponsePost(c request.CTX, command *model.Command, args *model.CommandArgs, response *model.CommandResponse, builtIn bool) (*model.Post, *model.AppError) {
|
||||||
origCtx := a.ctx
|
origCtx := a.ctx
|
||||||
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.HandleCommandResponsePost")
|
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.HandleCommandResponsePost")
|
||||||
|
|
||||||
@@ -12151,7 +12151,7 @@ func (a *OpenTracingAppLayer) MentionsToPublicChannels(c request.CTX, message st
|
|||||||
return resultVar0
|
return resultVar0
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *OpenTracingAppLayer) MentionsToTeamMembers(message string, teamID string) model.UserMentionMap {
|
func (a *OpenTracingAppLayer) MentionsToTeamMembers(c request.CTX, message string, teamID string) model.UserMentionMap {
|
||||||
origCtx := a.ctx
|
origCtx := a.ctx
|
||||||
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.MentionsToTeamMembers")
|
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.MentionsToTeamMembers")
|
||||||
|
|
||||||
@@ -12163,7 +12163,7 @@ func (a *OpenTracingAppLayer) MentionsToTeamMembers(message string, teamID strin
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
defer span.Finish()
|
defer span.Finish()
|
||||||
resultVar0 := a.app.MentionsToTeamMembers(message, teamID)
|
resultVar0 := a.app.MentionsToTeamMembers(c, message, teamID)
|
||||||
|
|
||||||
return resultVar0
|
return resultVar0
|
||||||
}
|
}
|
||||||
@@ -17563,7 +17563,7 @@ func (a *OpenTracingAppLayer) UpdateUser(c request.CTX, user *model.User, sendNo
|
|||||||
return resultVar0, resultVar1
|
return resultVar0, resultVar1
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *OpenTracingAppLayer) UpdateUserActive(c *request.Context, userID string, active bool) *model.AppError {
|
func (a *OpenTracingAppLayer) UpdateUserActive(c request.CTX, userID string, active bool) *model.AppError {
|
||||||
origCtx := a.ctx
|
origCtx := a.ctx
|
||||||
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.UpdateUserActive")
|
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.UpdateUserActive")
|
||||||
|
|
||||||
@@ -17769,7 +17769,7 @@ func (a *OpenTracingAppLayer) UploadEmojiImage(id string, imageData *multipart.F
|
|||||||
return resultVar0
|
return resultVar0
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *OpenTracingAppLayer) UploadFile(c *request.Context, data []byte, channelID string, filename string) (*model.FileInfo, *model.AppError) {
|
func (a *OpenTracingAppLayer) UploadFile(c request.CTX, data []byte, channelID string, filename string) (*model.FileInfo, *model.AppError) {
|
||||||
origCtx := a.ctx
|
origCtx := a.ctx
|
||||||
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.UploadFile")
|
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.UploadFile")
|
||||||
|
|
||||||
|
|||||||
@@ -1821,7 +1821,7 @@ func (*MockSlashCommandProvider) GetCommand(a *App, T i18n.TranslateFunc) *model
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (mscp *MockSlashCommandProvider) DoCommand(a *App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (mscp *MockSlashCommandProvider) DoCommand(a *App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
mscp.Args = args
|
mscp.Args = args
|
||||||
mscp.Message = message
|
mscp.Message = message
|
||||||
return &model.CommandResponse{
|
return &model.CommandResponse{
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ func (a *App) PluginCommandsForTeam(teamID string) []*model.Command {
|
|||||||
|
|
||||||
// tryExecutePluginCommand attempts to run a command provided by a plugin based on the given arguments. If no such
|
// tryExecutePluginCommand attempts to run a command provided by a plugin based on the given arguments. If no such
|
||||||
// command can be found, returns nil for all arguments.
|
// command can be found, returns nil for all arguments.
|
||||||
func (a *App) tryExecutePluginCommand(c *request.Context, args *model.CommandArgs) (*model.Command, *model.CommandResponse, *model.AppError) {
|
func (a *App) tryExecutePluginCommand(c request.CTX, args *model.CommandArgs) (*model.Command, *model.CommandResponse, *model.AppError) {
|
||||||
parts := strings.Split(args.Command, " ")
|
parts := strings.Split(args.Command, " ")
|
||||||
trigger := parts[0][1:]
|
trigger := parts[0][1:]
|
||||||
trigger = strings.ToLower(trigger)
|
trigger = strings.ToLower(trigger)
|
||||||
@@ -150,7 +150,7 @@ func (a *App) tryExecutePluginCommand(c *request.Context, args *model.CommandArg
|
|||||||
return matched.Command, nil, model.NewAppError("ExecutePluginCommand", "model.plugin_command.error.app_error", nil, "err="+err.Error(), http.StatusInternalServerError)
|
return matched.Command, nil, model.NewAppError("ExecutePluginCommand", "model.plugin_command.error.app_error", nil, "err="+err.Error(), http.StatusInternalServerError)
|
||||||
}
|
}
|
||||||
|
|
||||||
for username, userID := range a.MentionsToTeamMembers(args.Command, args.TeamId) {
|
for username, userID := range a.MentionsToTeamMembers(c, args.Command, args.TeamId) {
|
||||||
args.AddUserMention(username, userID)
|
args.AddUserMention(username, userID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ func NewAutoChannelCreator(a *app.App, team *model.Team, userID string) *AutoCha
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cfg *AutoChannelCreator) createRandomChannel(c *request.Context) (*model.Channel, error) {
|
func (cfg *AutoChannelCreator) createRandomChannel(c request.CTX) (*model.Channel, error) {
|
||||||
var displayName string
|
var displayName string
|
||||||
if cfg.Fuzzy {
|
if cfg.Fuzzy {
|
||||||
displayName = utils.FuzzName()
|
displayName = utils.FuzzName()
|
||||||
@@ -60,7 +60,7 @@ func (cfg *AutoChannelCreator) createRandomChannel(c *request.Context) (*model.C
|
|||||||
return channel, nil
|
return channel, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cfg *AutoChannelCreator) CreateTestChannels(c *request.Context, num utils.Range) ([]*model.Channel, error) {
|
func (cfg *AutoChannelCreator) CreateTestChannels(c request.CTX, num utils.Range) ([]*model.Channel, error) {
|
||||||
numChannels := utils.RandIntFromRange(num)
|
numChannels := utils.RandIntFromRange(num)
|
||||||
channels := make([]*model.Channel, numChannels)
|
channels := make([]*model.Channel, numChannels)
|
||||||
|
|
||||||
@@ -75,7 +75,7 @@ func (cfg *AutoChannelCreator) CreateTestChannels(c *request.Context, num utils.
|
|||||||
return channels, nil
|
return channels, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cfg *AutoChannelCreator) CreateTestDMs(c *request.Context, num utils.Range) ([]*model.Channel, error) {
|
func (cfg *AutoChannelCreator) CreateTestDMs(c request.CTX, num utils.Range) ([]*model.Channel, error) {
|
||||||
numDMs := utils.RandIntFromRange(num)
|
numDMs := utils.RandIntFromRange(num)
|
||||||
dms := make([]*model.Channel, numDMs)
|
dms := make([]*model.Channel, numDMs)
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ type TestEnvironment struct {
|
|||||||
Environments []TeamEnvironment
|
Environments []TeamEnvironment
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateTestEnvironmentWithTeams(a *app.App, c *request.Context, client *model.Client4, rangeTeams utils.Range, rangeChannels utils.Range, rangeUsers utils.Range, rangePosts utils.Range, fuzzy bool) (TestEnvironment, error) {
|
func CreateTestEnvironmentWithTeams(a *app.App, c request.CTX, client *model.Client4, rangeTeams utils.Range, rangeChannels utils.Range, rangeUsers utils.Range, rangePosts utils.Range, fuzzy bool) (TestEnvironment, error) {
|
||||||
rand.Seed(time.Now().UTC().UnixNano())
|
rand.Seed(time.Now().UTC().UnixNano())
|
||||||
|
|
||||||
teamCreator := NewAutoTeamCreator(client)
|
teamCreator := NewAutoTeamCreator(client)
|
||||||
@@ -48,7 +48,7 @@ func CreateTestEnvironmentWithTeams(a *app.App, c *request.Context, client *mode
|
|||||||
return environment, nil
|
return environment, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateTestEnvironmentInTeam(a *app.App, c *request.Context, client *model.Client4, team *model.Team, rangeChannels utils.Range, rangeUsers utils.Range, rangePosts utils.Range, fuzzy bool) (TeamEnvironment, error) {
|
func CreateTestEnvironmentInTeam(a *app.App, c request.CTX, client *model.Client4, team *model.Team, rangeChannels utils.Range, rangeUsers utils.Range, rangePosts utils.Range, fuzzy bool) (TeamEnvironment, error) {
|
||||||
rand.Seed(time.Now().UTC().UnixNano())
|
rand.Seed(time.Now().UTC().UnixNano())
|
||||||
|
|
||||||
// We need to create at least one user
|
// We need to create at least one user
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ func NewAutoPostCreator(a *app.App, channelid, userid string) *AutoPostCreator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cfg *AutoPostCreator) UploadTestFile(c *request.Context) ([]string, error) {
|
func (cfg *AutoPostCreator) UploadTestFile(c request.CTX) ([]string, error) {
|
||||||
filename := cfg.ImageFilenames[utils.RandIntFromRange(utils.Range{Begin: 0, End: len(cfg.ImageFilenames) - 1})]
|
filename := cfg.ImageFilenames[utils.RandIntFromRange(utils.Range{Begin: 0, End: len(cfg.ImageFilenames) - 1})]
|
||||||
|
|
||||||
path, _ := fileutils.FindDir("tests")
|
path, _ := fileutils.FindDir("tests")
|
||||||
@@ -69,11 +69,11 @@ func (cfg *AutoPostCreator) UploadTestFile(c *request.Context) ([]string, error)
|
|||||||
return []string{fileResp.Id}, nil
|
return []string{fileResp.Id}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cfg *AutoPostCreator) CreateRandomPost(c *request.Context) (*model.Post, error) {
|
func (cfg *AutoPostCreator) CreateRandomPost(c request.CTX) (*model.Post, error) {
|
||||||
return cfg.CreateRandomPostNested(c, "")
|
return cfg.CreateRandomPostNested(c, "")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cfg *AutoPostCreator) CreateRandomPostNested(c *request.Context, rootId string) (*model.Post, error) {
|
func (cfg *AutoPostCreator) CreateRandomPostNested(c request.CTX, rootId string) (*model.Post, error) {
|
||||||
var fileIDs []string
|
var fileIDs []string
|
||||||
if cfg.HasImage {
|
if cfg.HasImage {
|
||||||
var err error
|
var err error
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ func CreateBasicUser(a *app.App, client *model.Client4) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cfg *AutoUserCreator) createRandomUser(c *request.Context) (*model.User, error) {
|
func (cfg *AutoUserCreator) createRandomUser(c request.CTX) (*model.User, error) {
|
||||||
var userEmail string
|
var userEmail string
|
||||||
var userName string
|
var userName string
|
||||||
if cfg.Fuzzy {
|
if cfg.Fuzzy {
|
||||||
@@ -113,7 +113,7 @@ func (cfg *AutoUserCreator) createRandomUser(c *request.Context) (*model.User, e
|
|||||||
return ruser, nil
|
return ruser, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cfg *AutoUserCreator) CreateTestUsers(c *request.Context, num utils.Range) ([]*model.User, error) {
|
func (cfg *AutoUserCreator) CreateTestUsers(c request.CTX, num utils.Range) ([]*model.User, error) {
|
||||||
numUsers := utils.RandIntFromRange(num)
|
numUsers := utils.RandIntFromRange(num)
|
||||||
users := make([]*model.User, numUsers)
|
users := make([]*model.User, numUsers)
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ func (*AwayProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Command
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*AwayProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (*AwayProvider) DoCommand(a *app.App, _ request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
a.SetStatusAwayIfNeeded(args.UserId, true)
|
a.SetStatusAwayIfNeeded(args.UserId, true)
|
||||||
|
|
||||||
return &model.CommandResponse{ResponseType: model.CommandResponseTypeEphemeral, Text: args.T("api.command_away.success")}
|
return &model.CommandResponse{ResponseType: model.CommandResponseTypeEphemeral, Text: args.T("api.command_away.success")}
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ func (*HeaderProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Comma
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*HeaderProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (*HeaderProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
channel, err := a.GetChannel(c, args.ChannelId)
|
channel, err := a.GetChannel(c, args.ChannelId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return &model.CommandResponse{
|
return &model.CommandResponse{
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ func (*PurposeProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Comm
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*PurposeProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (*PurposeProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
channel, err := a.GetChannel(c, args.ChannelId)
|
channel, err := a.GetChannel(c, args.ChannelId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return &model.CommandResponse{
|
return &model.CommandResponse{
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ func (*RenameProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Comma
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*RenameProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (*RenameProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
channel, err := a.GetChannel(c, args.ChannelId)
|
channel, err := a.GetChannel(c, args.ChannelId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return &model.CommandResponse{
|
return &model.CommandResponse{
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ func (*CodeProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Command
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*CodeProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (*CodeProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
if message == "" {
|
if message == "" {
|
||||||
return &model.CommandResponse{Text: args.T("api.command_code.message.app_error"), ResponseType: model.CommandResponseTypeEphemeral}
|
return &model.CommandResponse{Text: args.T("api.command_code.message.app_error"), ResponseType: model.CommandResponseTypeEphemeral}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ func (*CustomStatusProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*CustomStatusProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (*CustomStatusProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
if !*a.Config().TeamSettings.EnableCustomUserStatuses {
|
if !*a.Config().TeamSettings.EnableCustomUserStatuses {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ func (*DndProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Command
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*DndProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (*DndProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
a.SetStatusDoNotDisturb(args.UserId)
|
a.SetStatusDoNotDisturb(args.UserId)
|
||||||
|
|
||||||
return &model.CommandResponse{ResponseType: model.CommandResponseTypeEphemeral, Text: args.T("api.command_dnd.success")}
|
return &model.CommandResponse{ResponseType: model.CommandResponseTypeEphemeral, Text: args.T("api.command_dnd.success")}
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ func (*EchoProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Command
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*EchoProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (*EchoProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
if message == "" {
|
if message == "" {
|
||||||
return &model.CommandResponse{Text: args.T("api.command_echo.message.app_error"), ResponseType: model.CommandResponseTypeEphemeral}
|
return &model.CommandResponse{Text: args.T("api.command_echo.message.app_error"), ResponseType: model.CommandResponseTypeEphemeral}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,11 +56,11 @@ func (*CollapseProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Com
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*ExpandProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (*ExpandProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
return setCollapsePreference(a, args, false)
|
return setCollapsePreference(a, args, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*CollapseProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (*CollapseProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
return setCollapsePreference(a, args, true)
|
return setCollapsePreference(a, args, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ func (*groupmsgProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Com
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*groupmsgProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (*groupmsgProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
targetUsers := map[string]*model.User{}
|
targetUsers := map[string]*model.User{}
|
||||||
targetUsersSlice := []string{args.UserId}
|
targetUsersSlice := []string{args.UserId}
|
||||||
invalidUsernames := []string{}
|
invalidUsernames := []string{}
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ func (h *HelpProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Comma
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *HelpProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (h *HelpProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
helpLink := *a.Config().SupportSettings.HelpLink
|
helpLink := *a.Config().SupportSettings.HelpLink
|
||||||
|
|
||||||
if helpLink == "" {
|
if helpLink == "" {
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ func (*InviteProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Comma
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*InviteProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (*InviteProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
if message == "" {
|
if message == "" {
|
||||||
return &model.CommandResponse{
|
return &model.CommandResponse{
|
||||||
Text: args.T("api.command_invite.missing_message.app_error"),
|
Text: args.T("api.command_invite.missing_message.app_error"),
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ func (*InvitePeopleProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*InvitePeopleProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (*InvitePeopleProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
if !a.HasPermissionToTeam(args.UserId, args.TeamId, model.PermissionInviteUser) {
|
if !a.HasPermissionToTeam(args.UserId, args.TeamId, model.PermissionInviteUser) {
|
||||||
return &model.CommandResponse{Text: args.T("api.command_invite_people.permission.app_error"), ResponseType: model.CommandResponseTypeEphemeral}
|
return &model.CommandResponse{Text: args.T("api.command_invite_people.permission.app_error"), ResponseType: model.CommandResponseTypeEphemeral}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ func (*JoinProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Command
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*JoinProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (*JoinProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
channelName := strings.ToLower(message)
|
channelName := strings.ToLower(message)
|
||||||
|
|
||||||
if strings.HasPrefix(message, "~") {
|
if strings.HasPrefix(message, "~") {
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ func (*LeaveProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Comman
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*LeaveProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (*LeaveProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
var channel *model.Channel
|
var channel *model.Channel
|
||||||
var noChannelErr *model.AppError
|
var noChannelErr *model.AppError
|
||||||
if channel, noChannelErr = a.GetChannel(c, args.ChannelId); noChannelErr != nil {
|
if channel, noChannelErr = a.GetChannel(c, args.ChannelId); noChannelErr != nil {
|
||||||
|
|||||||
@@ -115,16 +115,16 @@ func (*LoadTestProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Com
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (lt *LoadTestProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (lt *LoadTestProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
commandResponse, err := lt.doCommand(a, c, args, message)
|
commandResponse, err := lt.doCommand(a, c, args, message)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
mlog.Error("failed command /"+CmdTest, mlog.Err(err))
|
c.Logger().Error("failed command /"+CmdTest, mlog.Err(err))
|
||||||
}
|
}
|
||||||
|
|
||||||
return commandResponse
|
return commandResponse
|
||||||
}
|
}
|
||||||
|
|
||||||
func (lt *LoadTestProvider) doCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) (*model.CommandResponse, error) {
|
func (lt *LoadTestProvider) doCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) (*model.CommandResponse, error) {
|
||||||
//This command is only available when EnableTesting is true
|
//This command is only available when EnableTesting is true
|
||||||
if !*a.Config().ServiceSettings.EnableTesting {
|
if !*a.Config().ServiceSettings.EnableTesting {
|
||||||
return &model.CommandResponse{}, nil
|
return &model.CommandResponse{}, nil
|
||||||
@@ -181,7 +181,7 @@ func (*LoadTestProvider) HelpCommand(args *model.CommandArgs, message string) *m
|
|||||||
return &model.CommandResponse{Text: usage, ResponseType: model.CommandResponseTypeEphemeral}
|
return &model.CommandResponse{Text: usage, ResponseType: model.CommandResponseTypeEphemeral}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*LoadTestProvider) SetupCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) (*model.CommandResponse, error) {
|
func (*LoadTestProvider) SetupCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) (*model.CommandResponse, error) {
|
||||||
tokens := strings.Fields(strings.TrimPrefix(message, "setup"))
|
tokens := strings.Fields(strings.TrimPrefix(message, "setup"))
|
||||||
doTeams := contains(tokens, "teams")
|
doTeams := contains(tokens, "teams")
|
||||||
doFuzz := contains(tokens, "fuzz")
|
doFuzz := contains(tokens, "fuzz")
|
||||||
@@ -242,10 +242,10 @@ func (*LoadTestProvider) SetupCommand(a *app.App, c *request.Context, args *mode
|
|||||||
return &model.CommandResponse{Text: "Failed to create testing environment", ResponseType: model.CommandResponseTypeEphemeral}, err
|
return &model.CommandResponse{Text: "Failed to create testing environment", ResponseType: model.CommandResponseTypeEphemeral}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
mlog.Info("Testing environment created")
|
c.Logger().Info("Testing environment created")
|
||||||
for i := 0; i < len(environment.Teams); i++ {
|
for i := 0; i < len(environment.Teams); i++ {
|
||||||
mlog.Info("Team Created: " + environment.Teams[i].Name)
|
c.Logger().Info("Team Created: " + environment.Teams[i].Name)
|
||||||
mlog.Info("\t User to login: " + environment.Environments[i].Users[0].Email + ", " + UserPassword)
|
c.Logger().Info("\t User to login: " + environment.Environments[i].Users[0].Email + ", " + UserPassword)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
team, err := a.Srv().Store.Team().Get(args.TeamId)
|
team, err := a.Srv().Store.Team().Get(args.TeamId)
|
||||||
@@ -267,7 +267,7 @@ func (*LoadTestProvider) SetupCommand(a *app.App, c *request.Context, args *mode
|
|||||||
return &model.CommandResponse{Text: "Created environment", ResponseType: model.CommandResponseTypeEphemeral}, nil
|
return &model.CommandResponse{Text: "Created environment", ResponseType: model.CommandResponseTypeEphemeral}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*LoadTestProvider) ActivateUserCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) (*model.CommandResponse, error) {
|
func (*LoadTestProvider) ActivateUserCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) (*model.CommandResponse, error) {
|
||||||
user_id := strings.TrimSpace(strings.TrimPrefix(message, "activate_user"))
|
user_id := strings.TrimSpace(strings.TrimPrefix(message, "activate_user"))
|
||||||
if err := a.UpdateUserActive(c, user_id, true); err != nil {
|
if err := a.UpdateUserActive(c, user_id, true); err != nil {
|
||||||
return &model.CommandResponse{Text: "Failed to activate user", ResponseType: model.CommandResponseTypeEphemeral}, err
|
return &model.CommandResponse{Text: "Failed to activate user", ResponseType: model.CommandResponseTypeEphemeral}, err
|
||||||
@@ -276,7 +276,7 @@ func (*LoadTestProvider) ActivateUserCommand(a *app.App, c *request.Context, arg
|
|||||||
return &model.CommandResponse{Text: "Activated user", ResponseType: model.CommandResponseTypeEphemeral}, nil
|
return &model.CommandResponse{Text: "Activated user", ResponseType: model.CommandResponseTypeEphemeral}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*LoadTestProvider) DeActivateUserCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) (*model.CommandResponse, error) {
|
func (*LoadTestProvider) DeActivateUserCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) (*model.CommandResponse, error) {
|
||||||
user_id := strings.TrimSpace(strings.TrimPrefix(message, "deactivate_user"))
|
user_id := strings.TrimSpace(strings.TrimPrefix(message, "deactivate_user"))
|
||||||
if err := a.UpdateUserActive(c, user_id, false); err != nil {
|
if err := a.UpdateUserActive(c, user_id, false); err != nil {
|
||||||
return &model.CommandResponse{Text: "Failed to deactivate user", ResponseType: model.CommandResponseTypeEphemeral}, err
|
return &model.CommandResponse{Text: "Failed to deactivate user", ResponseType: model.CommandResponseTypeEphemeral}, err
|
||||||
@@ -285,7 +285,7 @@ func (*LoadTestProvider) DeActivateUserCommand(a *app.App, c *request.Context, a
|
|||||||
return &model.CommandResponse{Text: "DeActivated user", ResponseType: model.CommandResponseTypeEphemeral}, nil
|
return &model.CommandResponse{Text: "DeActivated user", ResponseType: model.CommandResponseTypeEphemeral}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*LoadTestProvider) UsersCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) (*model.CommandResponse, error) {
|
func (*LoadTestProvider) UsersCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) (*model.CommandResponse, error) {
|
||||||
cmd := strings.TrimSpace(strings.TrimPrefix(message, "users"))
|
cmd := strings.TrimSpace(strings.TrimPrefix(message, "users"))
|
||||||
|
|
||||||
doFuzz := false
|
doFuzz := false
|
||||||
@@ -314,7 +314,7 @@ func (*LoadTestProvider) UsersCommand(a *app.App, c *request.Context, args *mode
|
|||||||
return &model.CommandResponse{Text: "Added users", ResponseType: model.CommandResponseTypeEphemeral}, nil
|
return &model.CommandResponse{Text: "Added users", ResponseType: model.CommandResponseTypeEphemeral}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*LoadTestProvider) ChannelsCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) (*model.CommandResponse, error) {
|
func (*LoadTestProvider) ChannelsCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) (*model.CommandResponse, error) {
|
||||||
cmd := strings.TrimSpace(strings.TrimPrefix(message, "channels"))
|
cmd := strings.TrimSpace(strings.TrimPrefix(message, "channels"))
|
||||||
|
|
||||||
doFuzz := false
|
doFuzz := false
|
||||||
@@ -342,7 +342,7 @@ func (*LoadTestProvider) ChannelsCommand(a *app.App, c *request.Context, args *m
|
|||||||
return &model.CommandResponse{Text: "Added channels", ResponseType: model.CommandResponseTypeEphemeral}, nil
|
return &model.CommandResponse{Text: "Added channels", ResponseType: model.CommandResponseTypeEphemeral}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*LoadTestProvider) DMsCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) (*model.CommandResponse, error) {
|
func (*LoadTestProvider) DMsCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) (*model.CommandResponse, error) {
|
||||||
cmd := strings.TrimSpace(strings.TrimPrefix(message, "dms"))
|
cmd := strings.TrimSpace(strings.TrimPrefix(message, "dms"))
|
||||||
|
|
||||||
channelsr, ok := parseRange(cmd, "")
|
channelsr, ok := parseRange(cmd, "")
|
||||||
@@ -358,7 +358,7 @@ func (*LoadTestProvider) DMsCommand(a *app.App, c *request.Context, args *model.
|
|||||||
return &model.CommandResponse{Text: "Added DMs", ResponseType: model.CommandResponseTypeEphemeral}, nil
|
return &model.CommandResponse{Text: "Added DMs", ResponseType: model.CommandResponseTypeEphemeral}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*LoadTestProvider) ThreadedPostCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) (*model.CommandResponse, error) {
|
func (*LoadTestProvider) ThreadedPostCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) (*model.CommandResponse, error) {
|
||||||
var usernames []string
|
var usernames []string
|
||||||
options := &model.UserGetOptions{InTeamId: args.TeamId, Page: 0, PerPage: 1000}
|
options := &model.UserGetOptions{InTeamId: args.TeamId, Page: 0, PerPage: 1000}
|
||||||
if profileUsers, err := a.Srv().Store.User().GetProfiles(options); err == nil {
|
if profileUsers, err := a.Srv().Store.User().GetProfiles(options); err == nil {
|
||||||
@@ -384,7 +384,7 @@ func (*LoadTestProvider) ThreadedPostCommand(a *app.App, c *request.Context, arg
|
|||||||
return &model.CommandResponse{Text: "Added threaded post", ResponseType: model.CommandResponseTypeEphemeral}, nil
|
return &model.CommandResponse{Text: "Added threaded post", ResponseType: model.CommandResponseTypeEphemeral}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*LoadTestProvider) PostsCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) (*model.CommandResponse, error) {
|
func (*LoadTestProvider) PostsCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) (*model.CommandResponse, error) {
|
||||||
cmd := strings.TrimSpace(strings.TrimPrefix(message, "posts"))
|
cmd := strings.TrimSpace(strings.TrimPrefix(message, "posts"))
|
||||||
|
|
||||||
doFuzz := false
|
doFuzz := false
|
||||||
@@ -486,7 +486,7 @@ func (*LoadTestProvider) PostCommand(a *app.App, c request.CTX, args *model.Comm
|
|||||||
return &model.CommandResponse{Text: "Added a post to " + channel.DisplayName, ResponseType: model.CommandResponseTypeEphemeral}, nil
|
return &model.CommandResponse{Text: "Added a post to " + channel.DisplayName, ResponseType: model.CommandResponseTypeEphemeral}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*LoadTestProvider) URLCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) (*model.CommandResponse, error) {
|
func (*LoadTestProvider) URLCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) (*model.CommandResponse, error) {
|
||||||
url := strings.TrimSpace(strings.TrimPrefix(message, "url"))
|
url := strings.TrimSpace(strings.TrimPrefix(message, "url"))
|
||||||
if url == "" {
|
if url == "" {
|
||||||
return &model.CommandResponse{Text: "Command must contain a url", ResponseType: model.CommandResponseTypeEphemeral}, nil
|
return &model.CommandResponse{Text: "Command must contain a url", ResponseType: model.CommandResponseTypeEphemeral}, nil
|
||||||
@@ -540,7 +540,7 @@ func (*LoadTestProvider) URLCommand(a *app.App, c *request.Context, args *model.
|
|||||||
return &model.CommandResponse{Text: "Loaded data", ResponseType: model.CommandResponseTypeEphemeral}, nil
|
return &model.CommandResponse{Text: "Loaded data", ResponseType: model.CommandResponseTypeEphemeral}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*LoadTestProvider) JsonCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) (*model.CommandResponse, error) {
|
func (*LoadTestProvider) JsonCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) (*model.CommandResponse, error) {
|
||||||
url := strings.TrimSpace(strings.TrimPrefix(message, "json"))
|
url := strings.TrimSpace(strings.TrimPrefix(message, "json"))
|
||||||
if url == "" {
|
if url == "" {
|
||||||
return &model.CommandResponse{Text: "Command must contain a url", ResponseType: model.CommandResponseTypeEphemeral}, nil
|
return &model.CommandResponse{Text: "Command must contain a url", ResponseType: model.CommandResponseTypeEphemeral}, nil
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ func (*LogoutProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Comma
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*LogoutProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (*LogoutProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
// Actual logout is handled client side.
|
// Actual logout is handled client side.
|
||||||
return &model.CommandResponse{GotoLocation: "/login"}
|
return &model.CommandResponse{GotoLocation: "/login"}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ func (*MeProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Command {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*MeProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (*MeProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
return &model.CommandResponse{
|
return &model.CommandResponse{
|
||||||
ResponseType: model.CommandResponseTypeInChannel,
|
ResponseType: model.CommandResponseTypeInChannel,
|
||||||
Type: model.PostTypeMe,
|
Type: model.PostTypeMe,
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ func (*msgProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Command
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*msgProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (*msgProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
splitMessage := strings.SplitN(message, " ", 2)
|
splitMessage := strings.SplitN(message, " ", 2)
|
||||||
|
|
||||||
parsedMessage := ""
|
parsedMessage := ""
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ func (*MuteProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Command
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*MuteProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (*MuteProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
var channel *model.Channel
|
var channel *model.Channel
|
||||||
var noChannelErr *model.AppError
|
var noChannelErr *model.AppError
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ func (*OfflineProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Comm
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*OfflineProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (*OfflineProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
a.SetStatusOffline(args.UserId, true)
|
a.SetStatusOffline(args.UserId, true)
|
||||||
|
|
||||||
return &model.CommandResponse{ResponseType: model.CommandResponseTypeEphemeral, Text: args.T("api.command_offline.success")}
|
return &model.CommandResponse{ResponseType: model.CommandResponseTypeEphemeral, Text: args.T("api.command_offline.success")}
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ func (*OnlineProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Comma
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*OnlineProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (*OnlineProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
a.SetStatusOnline(args.UserId, true)
|
a.SetStatusOnline(args.UserId, true)
|
||||||
|
|
||||||
return &model.CommandResponse{ResponseType: model.CommandResponseTypeEphemeral, Text: args.T("api.command_online.success")}
|
return &model.CommandResponse{ResponseType: model.CommandResponseTypeEphemeral, Text: args.T("api.command_online.success")}
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ func (rp *RemoteProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Co
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (rp *RemoteProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (rp *RemoteProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
if !a.HasPermissionTo(args.UserId, model.PermissionManageSecureConnections) {
|
if !a.HasPermissionTo(args.UserId, model.PermissionManageSecureConnections) {
|
||||||
return responsef(args.T("api.command_remote.permission_required", map[string]any{"Permission": "manage_secure_connections"}))
|
return responsef(args.T("api.command_remote.permission_required", map[string]any{"Permission": "manage_secure_connections"}))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,15 +57,15 @@ func (*KickProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Command
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*RemoveProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (*RemoveProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
return doCommand(a, c, args, message)
|
return doCommand(a, c, args, message)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*KickProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (*KickProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
return doCommand(a, c, args, message)
|
return doCommand(a, c, args, message)
|
||||||
}
|
}
|
||||||
|
|
||||||
func doCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func doCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
channel, err := a.GetChannel(c, args.ChannelId)
|
channel, err := a.GetChannel(c, args.ChannelId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return &model.CommandResponse{
|
return &model.CommandResponse{
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ func (search *SearchProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *mode
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (search *SearchProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (search *SearchProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
// This command is handled client-side and shouldn't hit the server.
|
// This command is handled client-side and shouldn't hit the server.
|
||||||
return &model.CommandResponse{
|
return &model.CommandResponse{
|
||||||
Text: args.T("api.command_search.unsupported.app_error"),
|
Text: args.T("api.command_search.unsupported.app_error"),
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ func (settings *SettingsProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (settings *SettingsProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (settings *SettingsProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
// This command is handled client-side and shouldn't hit the server.
|
// This command is handled client-side and shouldn't hit the server.
|
||||||
return &model.CommandResponse{
|
return &model.CommandResponse{
|
||||||
Text: args.T("api.command_settings.unsupported.app_error"),
|
Text: args.T("api.command_settings.unsupported.app_error"),
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ func (sp *ShareProvider) getAutoCompleteUnInviteRemote(a *app.App, _ *model.Comm
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (sp *ShareProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (sp *ShareProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
if !a.HasPermissionTo(args.UserId, model.PermissionManageSharedChannels) {
|
if !a.HasPermissionTo(args.UserId, model.PermissionManageSharedChannels) {
|
||||||
return responsef(args.T("api.command_share.permission_required", map[string]any{"Permission": "manage_shared_channels"}))
|
return responsef(args.T("api.command_share.permission_required", map[string]any{"Permission": "manage_shared_channels"}))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ func (*ShortcutsProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Co
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*ShortcutsProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (*ShortcutsProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
// This command is handled client-side and shouldn't hit the server.
|
// This command is handled client-side and shouldn't hit the server.
|
||||||
return &model.CommandResponse{
|
return &model.CommandResponse{
|
||||||
Text: args.T("api.command_shortcuts.unsupported.app_error"),
|
Text: args.T("api.command_shortcuts.unsupported.app_error"),
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ func (*ShrugProvider) GetCommand(a *app.App, T i18n.TranslateFunc) *model.Comman
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*ShrugProvider) DoCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) *model.CommandResponse {
|
func (*ShrugProvider) DoCommand(a *app.App, c request.CTX, args *model.CommandArgs, message string) *model.CommandResponse {
|
||||||
rmsg := `¯\\\_(ツ)\_/¯`
|
rmsg := `¯\\\_(ツ)\_/¯`
|
||||||
if message != "" {
|
if message != "" {
|
||||||
rmsg = message + " " + rmsg
|
rmsg = message + " " + rmsg
|
||||||
|
|||||||
@@ -525,7 +525,7 @@ func TestMentionsToTeamMembers(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, data := range fixture {
|
for _, data := range fixture {
|
||||||
actualMap := th.App.MentionsToTeamMembers(data.message, data.inTeam)
|
actualMap := th.App.MentionsToTeamMembers(th.Context, data.message, data.inTeam)
|
||||||
require.Equal(t, actualMap, data.expectedMap)
|
require.Equal(t, actualMap, data.expectedMap)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1220,7 +1220,7 @@ func (a *App) UpdateUser(c request.CTX, user *model.User, sendNotifications bool
|
|||||||
return userUpdate.New, nil
|
return userUpdate.New, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *App) UpdateUserActive(c *request.Context, userID string, active bool) *model.AppError {
|
func (a *App) UpdateUserActive(c request.CTX, userID string, active bool) *model.AppError {
|
||||||
user, err := a.GetUser(userID)
|
user, err := a.GetUser(userID)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/mattermost/mattermost-server/v6/app/request"
|
||||||
"github.com/mattermost/mattermost-server/v6/audit"
|
"github.com/mattermost/mattermost-server/v6/audit"
|
||||||
"github.com/mattermost/mattermost-server/v6/model"
|
"github.com/mattermost/mattermost-server/v6/model"
|
||||||
|
|
||||||
@@ -229,7 +230,7 @@ func bulkExportCmdF(command *cobra.Command, args []string) error {
|
|||||||
var opts model.BulkExportOpts
|
var opts model.BulkExportOpts
|
||||||
opts.IncludeAttachments = attachments
|
opts.IncludeAttachments = attachments
|
||||||
opts.CreateArchive = archive
|
opts.CreateArchive = archive
|
||||||
if err := a.BulkExport(fileWriter, filepath.Dir(outPath), opts); err != nil {
|
if err := a.BulkExport(request.EmptyContext(a.Log()), fileWriter, filepath.Dir(outPath), opts); err != nil {
|
||||||
CommandPrintErrorln(err.Error())
|
CommandPrintErrorln(err.Error())
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
|
"github.com/mattermost/mattermost-server/v6/app/request"
|
||||||
"github.com/mattermost/mattermost-server/v6/jobs"
|
"github.com/mattermost/mattermost-server/v6/jobs"
|
||||||
"github.com/mattermost/mattermost-server/v6/model"
|
"github.com/mattermost/mattermost-server/v6/model"
|
||||||
"github.com/mattermost/mattermost-server/v6/services/configservice"
|
"github.com/mattermost/mattermost-server/v6/services/configservice"
|
||||||
@@ -18,7 +19,8 @@ const jobName = "ExportProcess"
|
|||||||
type AppIface interface {
|
type AppIface interface {
|
||||||
configservice.ConfigService
|
configservice.ConfigService
|
||||||
WriteFile(fr io.Reader, path string) (int64, *model.AppError)
|
WriteFile(fr io.Reader, path string) (int64, *model.AppError)
|
||||||
BulkExport(writer io.Writer, outPath string, opts model.BulkExportOpts) *model.AppError
|
BulkExport(ctx request.CTX, writer io.Writer, outPath string, opts model.BulkExportOpts) *model.AppError
|
||||||
|
Log() *mlog.Logger
|
||||||
}
|
}
|
||||||
|
|
||||||
func MakeWorker(jobServer *jobs.JobServer, app AppIface) model.Worker {
|
func MakeWorker(jobServer *jobs.JobServer, app AppIface) model.Worker {
|
||||||
@@ -45,7 +47,7 @@ func MakeWorker(jobServer *jobs.JobServer, app AppIface) model.Worker {
|
|||||||
errCh <- appErr
|
errCh <- appErr
|
||||||
}()
|
}()
|
||||||
|
|
||||||
appErr := app.BulkExport(wr, outPath, opts)
|
appErr := app.BulkExport(request.EmptyContext(app.Log()), wr, outPath, opts)
|
||||||
if err := wr.Close(); err != nil {
|
if err := wr.Close(); err != nil {
|
||||||
mlog.Warn("Worker: error closing writer")
|
mlog.Warn("Worker: error closing writer")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -269,13 +269,13 @@ func (_m *MockAppIface) InvalidateCacheForUser(userID string) {
|
|||||||
_m.Called(userID)
|
_m.Called(userID)
|
||||||
}
|
}
|
||||||
|
|
||||||
// MentionsToTeamMembers provides a mock function with given fields: message, teamID
|
// MentionsToTeamMembers provides a mock function with given fields: c, message, teamID
|
||||||
func (_m *MockAppIface) MentionsToTeamMembers(message string, teamID string) model.UserMentionMap {
|
func (_m *MockAppIface) MentionsToTeamMembers(c request.CTX, message string, teamID string) model.UserMentionMap {
|
||||||
ret := _m.Called(message, teamID)
|
ret := _m.Called(c, message, teamID)
|
||||||
|
|
||||||
var r0 model.UserMentionMap
|
var r0 model.UserMentionMap
|
||||||
if rf, ok := ret.Get(0).(func(string, string) model.UserMentionMap); ok {
|
if rf, ok := ret.Get(0).(func(request.CTX, string, string) model.UserMentionMap); ok {
|
||||||
r0 = rf(message, teamID)
|
r0 = rf(c, message, teamID)
|
||||||
} else {
|
} else {
|
||||||
if ret.Get(0) != nil {
|
if ret.Get(0) != nil {
|
||||||
r0 = ret.Get(0).(model.UserMentionMap)
|
r0 = ret.Get(0).(model.UserMentionMap)
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ type AppIface interface {
|
|||||||
PatchChannelModerationsForChannel(c request.CTX, channel *model.Channel, channelModerationsPatch []*model.ChannelModerationPatch) ([]*model.ChannelModeration, *model.AppError)
|
PatchChannelModerationsForChannel(c request.CTX, channel *model.Channel, channelModerationsPatch []*model.ChannelModerationPatch) ([]*model.ChannelModeration, *model.AppError)
|
||||||
CreateUploadSession(c request.CTX, us *model.UploadSession) (*model.UploadSession, *model.AppError)
|
CreateUploadSession(c request.CTX, us *model.UploadSession) (*model.UploadSession, *model.AppError)
|
||||||
FileReader(path string) (filestore.ReadCloseSeeker, *model.AppError)
|
FileReader(path string) (filestore.ReadCloseSeeker, *model.AppError)
|
||||||
MentionsToTeamMembers(message, teamID string) model.UserMentionMap
|
MentionsToTeamMembers(c request.CTX, message, teamID string) model.UserMentionMap
|
||||||
GetProfileImage(user *model.User) ([]byte, bool, *model.AppError)
|
GetProfileImage(user *model.User) ([]byte, bool, *model.AppError)
|
||||||
InvalidateCacheForUser(userID string)
|
InvalidateCacheForUser(userID string)
|
||||||
NotifySharedChannelUserUpdate(user *model.User)
|
NotifySharedChannelUserUpdate(user *model.User)
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import (
|
|||||||
|
|
||||||
"github.com/wiggin77/merror"
|
"github.com/wiggin77/merror"
|
||||||
|
|
||||||
|
"github.com/mattermost/mattermost-server/v6/app/request"
|
||||||
"github.com/mattermost/mattermost-server/v6/model"
|
"github.com/mattermost/mattermost-server/v6/model"
|
||||||
"github.com/mattermost/mattermost-server/v6/services/remotecluster"
|
"github.com/mattermost/mattermost-server/v6/services/remotecluster"
|
||||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||||
@@ -271,7 +272,7 @@ func (scs *Service) fetchPostUsersForSync(sd *syncData) error {
|
|||||||
userIDs[post.UserId] = p2mm{}
|
userIDs[post.UserId] = p2mm{}
|
||||||
|
|
||||||
// get mentions and users for each mention
|
// get mentions and users for each mention
|
||||||
mentionMap := scs.app.MentionsToTeamMembers(post.Message, sc.TeamId)
|
mentionMap := scs.app.MentionsToTeamMembers(request.EmptyContext(scs.server.GetLogger()), post.Message, sc.TeamId)
|
||||||
for _, userID := range mentionMap {
|
for _, userID := range mentionMap {
|
||||||
userIDs[userID] = p2mm{
|
userIDs[userID] = p2mm{
|
||||||
post: post,
|
post: post,
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user