github.com/haalcala/mattermost-server-change-repo@v0.0.0-20210713015153-16753fbeee5f/app/slashcommands/auto_channels.go (about) 1 // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. 2 // See LICENSE.txt for license information. 3 4 package slashcommands 5 6 import ( 7 "github.com/mattermost/mattermost-server/v5/app" 8 "github.com/mattermost/mattermost-server/v5/model" 9 "github.com/mattermost/mattermost-server/v5/utils" 10 ) 11 12 type AutoChannelCreator struct { 13 a *app.App 14 userID string 15 team *model.Team 16 Fuzzy bool 17 DisplayNameLen utils.Range 18 DisplayNameCharset string 19 NameLen utils.Range 20 NameCharset string 21 ChannelType string 22 } 23 24 func NewAutoChannelCreator(a *app.App, team *model.Team, userID string) *AutoChannelCreator { 25 return &AutoChannelCreator{ 26 a: a, 27 team: team, 28 userID: userID, 29 Fuzzy: false, 30 DisplayNameLen: ChannelDisplayNameLen, 31 DisplayNameCharset: utils.ALPHANUMERIC, 32 NameLen: ChannelNameLen, 33 NameCharset: utils.LOWERCASE, 34 ChannelType: ChannelType, 35 } 36 } 37 38 func (cfg *AutoChannelCreator) createRandomChannel() (*model.Channel, error) { 39 var displayName string 40 if cfg.Fuzzy { 41 displayName = utils.FuzzName() 42 } else { 43 displayName = utils.RandomName(cfg.NameLen, cfg.NameCharset) 44 } 45 name := utils.RandomName(cfg.NameLen, cfg.NameCharset) 46 47 channel := &model.Channel{ 48 TeamId: cfg.team.Id, 49 DisplayName: displayName, 50 Name: name, 51 Type: cfg.ChannelType, 52 CreatorId: cfg.userID, 53 } 54 55 channel, err := cfg.a.CreateChannel(channel, true) 56 if err != nil { 57 return nil, err 58 } 59 return channel, nil 60 } 61 62 func (cfg *AutoChannelCreator) CreateTestChannels(num utils.Range) ([]*model.Channel, error) { 63 numChannels := utils.RandIntFromRange(num) 64 channels := make([]*model.Channel, numChannels) 65 66 for i := 0; i < numChannels; i++ { 67 var err error 68 channels[i], err = cfg.createRandomChannel() 69 if err != nil { 70 return nil, err 71 } 72 } 73 74 return channels, nil 75 }