summaryrefslogtreecommitdiffstats
path: root/cmd/mattermost/commands/webhook.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/mattermost/commands/webhook.go')
-rw-r--r--cmd/mattermost/commands/webhook.go52
1 files changed, 52 insertions, 0 deletions
diff --git a/cmd/mattermost/commands/webhook.go b/cmd/mattermost/commands/webhook.go
index dbe292e72..0c56af18c 100644
--- a/cmd/mattermost/commands/webhook.go
+++ b/cmd/mattermost/commands/webhook.go
@@ -7,6 +7,7 @@ import (
"fmt"
"github.com/mattermost/mattermost-server/model"
+ "github.com/pkg/errors"
"github.com/spf13/cobra"
)
@@ -23,6 +24,14 @@ var WebhookListCmd = &cobra.Command{
RunE: listWebhookCmdF,
}
+var WebhookCreateIncomingCmd = &cobra.Command{
+ Use: "create-incoming",
+ Short: "Create incoming webhook",
+ Long: "create incoming webhook which allows external posting of messages to specific channel",
+ Example: " webhook create-incoming --channel [channelID] --user [userID] --description [webhookDescription] --lock-to-channel --icon [iconURL]",
+ RunE: createIncomingWebhookCmdF,
+}
+
func listWebhookCmdF(command *cobra.Command, args []string) error {
app, err := InitDBCommandContextCobra(command)
if err != nil {
@@ -75,9 +84,52 @@ func listWebhookCmdF(command *cobra.Command, args []string) error {
return nil
}
+func createIncomingWebhookCmdF(command *cobra.Command, args []string) error {
+ app, err := InitDBCommandContextCobra(command)
+ if err != nil {
+ return err
+ }
+ defer app.Shutdown()
+
+ channelArg, _ := command.Flags().GetString("channel")
+ channel := getChannelFromChannelArg(app, channelArg)
+ if channel == nil {
+ return errors.New("Unable to find channel '" + channelArg + "'")
+ }
+
+ userArg, _ := command.Flags().GetString("user")
+ user := getUserFromUserArg(app, userArg)
+ displayName, _ := command.Flags().GetString("display-name")
+ description, _ := command.Flags().GetString("description")
+ iconUrl, _ := command.Flags().GetString("icon")
+ channelLocked, _ := command.Flags().GetBool("lock-to-channel")
+
+ incomingWebhook := &model.IncomingWebhook{
+ ChannelId: channel.Id,
+ DisplayName: displayName,
+ Description: description,
+ IconURL: iconUrl,
+ ChannelLocked: channelLocked,
+ }
+
+ if _, err := app.CreateIncomingWebhookForChannel(user.Id, channel, incomingWebhook); err != nil {
+ return err
+ }
+
+ return nil
+}
+
func init() {
+ WebhookCreateIncomingCmd.Flags().String("channel", "", "Channel ID")
+ WebhookCreateIncomingCmd.Flags().String("user", "", "User ID")
+ WebhookCreateIncomingCmd.Flags().String("display-name", "", "Incoming webhook display name")
+ WebhookCreateIncomingCmd.Flags().String("description", "", "Incoming webhook description")
+ WebhookCreateIncomingCmd.Flags().String("icon", "", "Icon URL")
+ WebhookCreateIncomingCmd.Flags().Bool("lock-to-channel", false, "Lock to channel")
+
WebhookCmd.AddCommand(
WebhookListCmd,
+ WebhookCreateIncomingCmd,
)
RootCmd.AddCommand(WebhookCmd)