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  }