From 56e74239d6b34df8f30ef046f0b0ff4ff0866a71 Mon Sep 17 00:00:00 2001 From: =Corey Hulen Date: Sun, 14 Jun 2015 23:53:32 -0800 Subject: first commit --- api/auto_posts.go | 126 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 api/auto_posts.go (limited to 'api/auto_posts.go') diff --git a/api/auto_posts.go b/api/auto_posts.go new file mode 100644 index 000000000..a014d22ae --- /dev/null +++ b/api/auto_posts.go @@ -0,0 +1,126 @@ +// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved. +// See License.txt for license information. + +package api + +import ( + "bytes" + "github.com/mattermost/platform/model" + "github.com/mattermost/platform/utils" + "io" + "mime/multipart" + "os" +) + +type AutoPostCreator struct { + client *model.Client + 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.Client, channelid string) *AutoPostCreator { + return &AutoPostCreator{ + client: client, + channelid: channelid, + Fuzzy: false, + TextLength: utils.Range{100, 200}, + HasImage: false, + ImageFilenames: TEST_IMAGE_FILENAMES, + Users: []string{}, + Mentions: utils.Range{0, 5}, + Tags: utils.Range{0, 7}, + } +} + +func (cfg *AutoPostCreator) UploadTestFile() ([]string, bool) { + body := &bytes.Buffer{} + writer := multipart.NewWriter(body) + + filename := cfg.ImageFilenames[utils.RandIntFromRange(utils.Range{0, len(cfg.ImageFilenames) - 1})] + + part, err := writer.CreateFormFile("files", filename) + if err != nil { + return nil, false + } + + path := utils.FindDir("web/static/images") + file, err := os.Open(path + "/" + filename) + defer file.Close() + + _, err = io.Copy(part, file) + if err != nil { + return nil, false + } + + field, err := writer.CreateFormField("channel_id") + if err != nil { + return nil, false + } + + _, err = field.Write([]byte(cfg.channelid)) + if err != nil { + return nil, false + } + + err = writer.Close() + if err != nil { + return nil, false + } + + resp, appErr := cfg.client.UploadFile("/files/upload", body.Bytes(), writer.FormDataContentType()) + if appErr != nil { + return nil, false + } + + return resp.Data.(*model.FileUploadResponse).Filenames, true +} + +func (cfg *AutoPostCreator) CreateRandomPost() (*model.Post, bool) { + var filenames []string + if cfg.HasImage { + var err1 bool + filenames, err1 = cfg.UploadTestFile() + if err1 == false { + 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, + Message: postText, + Filenames: filenames} + result, err2 := cfg.client.CreatePost(post) + if err2 != nil { + return nil, false + } + return result.Data.(*model.Post), true +} + +func (cfg *AutoPostCreator) CreateTestPosts(rangePosts utils.Range) ([]*model.Post, bool) { + numPosts := utils.RandIntFromRange(rangePosts) + posts := make([]*model.Post, numPosts) + + for i := 0; i < numPosts; i++ { + var err bool + posts[i], err = cfg.CreateRandomPost() + if err != true { + return posts, false + } + } + + return posts, true +} -- cgit v1.2.3-1-g7c22