Files
mattermost/app/auto_posts.go
Jesús Espino a63684fcb5 Consistent license message for all the go files (#13235)
* Consistent license message for all the go files

* Fixing the last set of unconsistencies with the license headers

* Addressing PR review comments

* Fixing busy.go and busy_test.go license header
2019-11-29 12:59:40 +01:00

101 lines
2.4 KiB
Go

// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
package app
import (
"bytes"
"io"
"os"
"path/filepath"
"github.com/mattermost/mattermost-server/v5/model"
"github.com/mattermost/mattermost-server/v5/utils"
"github.com/mattermost/mattermost-server/v5/utils/fileutils"
)
type AutoPostCreator struct {
client *model.Client4
channelid string
Fuzzy bool
TextLength utils.Range
HasImage bool
ImageFilenames []string
Users []string
Mentions utils.Range
Tags utils.Range
}
// Automatic poster used for testing
func NewAutoPostCreator(client *model.Client4, channelid string) *AutoPostCreator {
return &AutoPostCreator{
client: client,
channelid: channelid,
Fuzzy: false,
TextLength: utils.Range{Begin: 100, End: 200},
HasImage: false,
ImageFilenames: TEST_IMAGE_FILENAMES,
Users: []string{},
Mentions: utils.Range{Begin: 0, End: 5},
Tags: utils.Range{Begin: 0, End: 7},
}
}
func (cfg *AutoPostCreator) UploadTestFile() ([]string, bool) {
filename := cfg.ImageFilenames[utils.RandIntFromRange(utils.Range{Begin: 0, End: len(cfg.ImageFilenames) - 1})]
path, _ := fileutils.FindDir("web/static/images")
file, err := os.Open(filepath.Join(path, filename))
if err != nil {
return nil, false
}
defer file.Close()
data := &bytes.Buffer{}
_, err = io.Copy(data, file)
if err != nil {
return nil, false
}
resp, appErr := cfg.client.UploadFile(data.Bytes(), cfg.channelid, filename)
if appErr != nil {
return nil, false
}
return []string{resp.FileInfos[0].Id}, true
}
func (cfg *AutoPostCreator) CreateRandomPost() (*model.Post, bool) {
return cfg.CreateRandomPostNested("", "")
}
func (cfg *AutoPostCreator) CreateRandomPostNested(parentId, rootId string) (*model.Post, bool) {
var fileIds []string
if cfg.HasImage {
var err1 bool
fileIds, err1 = cfg.UploadTestFile()
if !err1 {
return nil, false
}
}
var postText string
if cfg.Fuzzy {
postText = utils.FuzzPost()
} else {
postText = utils.RandomText(cfg.TextLength, cfg.Tags, cfg.Mentions, cfg.Users)
}
post := &model.Post{
ChannelId: cfg.channelid,
ParentId: parentId,
RootId: rootId,
Message: postText,
FileIds: fileIds}
rpost, resp := cfg.client.CreatePost(post)
if resp != nil && resp.Error != nil {
return nil, false
}
return rpost, true
}