mirror of https://github.com/containrrr/watchtower
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			69 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
			
		
		
	
	
			69 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
package notifications
 | 
						|
 | 
						|
import (
 | 
						|
	"strings"
 | 
						|
 | 
						|
	shoutrrrTeams "github.com/containrrr/shoutrrr/pkg/services/teams"
 | 
						|
	t "github.com/containrrr/watchtower/pkg/types"
 | 
						|
	log "github.com/sirupsen/logrus"
 | 
						|
	"github.com/spf13/cobra"
 | 
						|
)
 | 
						|
 | 
						|
const (
 | 
						|
	msTeamsType = "msteams"
 | 
						|
)
 | 
						|
 | 
						|
type msTeamsTypeNotifier struct {
 | 
						|
	webHookURL string
 | 
						|
	levels     []log.Level
 | 
						|
	data       bool
 | 
						|
}
 | 
						|
 | 
						|
// NewMsTeamsNotifier is a factory method creating a new teams notifier instance
 | 
						|
func NewMsTeamsNotifier(cmd *cobra.Command, acceptedLogLevels []log.Level) t.ConvertableNotifier {
 | 
						|
	return newMsTeamsNotifier(cmd, acceptedLogLevels)
 | 
						|
}
 | 
						|
 | 
						|
func newMsTeamsNotifier(cmd *cobra.Command, acceptedLogLevels []log.Level) t.ConvertableNotifier {
 | 
						|
 | 
						|
	flags := cmd.PersistentFlags()
 | 
						|
 | 
						|
	webHookURL, _ := flags.GetString("notification-msteams-hook")
 | 
						|
	if len(webHookURL) <= 0 {
 | 
						|
		log.Fatal("Required argument --notification-msteams-hook(cli) or WATCHTOWER_NOTIFICATION_MSTEAMS_HOOK_URL(env) is empty.")
 | 
						|
	}
 | 
						|
 | 
						|
	withData, _ := flags.GetBool("notification-msteams-data")
 | 
						|
	n := &msTeamsTypeNotifier{
 | 
						|
		levels:     acceptedLogLevels,
 | 
						|
		webHookURL: webHookURL,
 | 
						|
		data:       withData,
 | 
						|
	}
 | 
						|
 | 
						|
	return n
 | 
						|
}
 | 
						|
 | 
						|
func (n *msTeamsTypeNotifier) GetURL() string {
 | 
						|
 | 
						|
	baseURL := "https://outlook.office.com/webhook/"
 | 
						|
 | 
						|
	path := strings.Replace(n.webHookURL, baseURL, "", 1)
 | 
						|
	rawToken := strings.Replace(path, "/IncomingWebhook", "", 1)
 | 
						|
	token := strings.Split(rawToken, "/")
 | 
						|
	config := &shoutrrrTeams.Config{
 | 
						|
		Token: shoutrrrTeams.Token{
 | 
						|
			A: token[0],
 | 
						|
			B: token[1],
 | 
						|
			C: token[2],
 | 
						|
		},
 | 
						|
	}
 | 
						|
 | 
						|
	return config.GetURL().String()
 | 
						|
}
 | 
						|
 | 
						|
func (n *msTeamsTypeNotifier) StartNotification()          {}
 | 
						|
func (n *msTeamsTypeNotifier) SendNotification()           {}
 | 
						|
func (n *msTeamsTypeNotifier) Close() {}
 | 
						|
func (n *msTeamsTypeNotifier) Levels() []log.Level         { return nil }
 | 
						|
func (n *msTeamsTypeNotifier) Fire(entry *log.Entry) error { return nil }
 |