major: remove slack context
This commit is contained in:
		
							parent
							
								
									8adfa89575
								
							
						
					
					
						commit
						4e2a9a4b89
					
				| @ -11,14 +11,12 @@ import ( | ||||
| 
 | ||||
| 	"github.com/digitalocean/godo" | ||||
| 	log "github.com/sirupsen/logrus" | ||||
| 	"github.com/slack-go/slack" | ||||
| ) | ||||
| 
 | ||||
| const createdAtFormat = "2006-01-02T15:04:05Z" | ||||
| 
 | ||||
| type snapshotterContext struct { | ||||
| 	DoContext *DigitalOceanContext | ||||
| 	SlackContext *SlackContext | ||||
| } | ||||
| 
 | ||||
| func initLogging() { | ||||
| @ -36,19 +34,19 @@ func main() { | ||||
| 
 | ||||
| 	DOToken, present := os.LookupEnv("DO_TOKEN") | ||||
| 
 | ||||
| 	if present == false { | ||||
| 	if !present { | ||||
| 		log.Fatal("Missing enviroment variable \"DO_TOKEN\"") | ||||
| 	} | ||||
| 
 | ||||
| 	volumesEnv, present := os.LookupEnv("DO_VOLUMES") | ||||
| 
 | ||||
| 	if present == false { | ||||
| 	if !present { | ||||
| 		log.Fatal("Missing enviroment variable \"DO_VOLUMES\"") | ||||
| 	} | ||||
| 
 | ||||
| 	snapshotCountEnv, present := os.LookupEnv("DO_SNAPSHOT_COUNT") | ||||
| 
 | ||||
| 	if present == false { | ||||
| 	if !present { | ||||
| 		log.Fatal("Missing enviroment variable \"DO_SNAPSHOT_COUNT\"") | ||||
| 	} | ||||
| 
 | ||||
| @ -58,29 +56,11 @@ func main() { | ||||
| 		log.Fatal("Enviroment variable \"DO_SNAPSHOT_COUNT\" is not an integer") | ||||
| 	} | ||||
| 
 | ||||
| 	slackEnv := os.Getenv("SLACK_TOKEN") | ||||
| 
 | ||||
| 	var slackContext *SlackContext = nil | ||||
| 
 | ||||
| 	if slackEnv != "" { | ||||
| 		channelID, present := os.LookupEnv("SLACK_CHANNEL_ID") | ||||
| 
 | ||||
| 		if present == false { | ||||
| 			log.Fatal("Missing enviroment variable \"SLACK_CHANNEL_ID\"") | ||||
| 		} | ||||
| 
 | ||||
| 		slackContext = &SlackContext{ | ||||
| 			client:    slack.New(slackEnv), | ||||
| 			channelID: channelID, | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	ctx := snapshotterContext{ | ||||
| 		DoContext: &DigitalOceanContext{ | ||||
| 			client: godo.NewFromToken(DOToken), | ||||
| 			ctx:    context.TODO(), | ||||
| 		}, | ||||
| 		SlackContext: slackContext, | ||||
| 	} | ||||
| 
 | ||||
| 	volumeIDs := strings.Split(volumesEnv, ",") | ||||
| @ -95,6 +75,7 @@ func main() { | ||||
| 			VolumeID: volume.ID, | ||||
| 			Name:     time.Now().Format("2006-01-02T15:04:05"), | ||||
| 		}) | ||||
| 
 | ||||
| 		if err != nil { | ||||
| 			handleError(ctx, err, true) | ||||
| 		} | ||||
| @ -103,6 +84,10 @@ func main() { | ||||
| 
 | ||||
| 		snapshots, _, err := ctx.DoContext.ListSnapshots(volume.ID, nil) | ||||
| 
 | ||||
| 		if err != nil { | ||||
| 			handleError(ctx, err, true) | ||||
| 		} | ||||
| 
 | ||||
| 		snapshotLength := len(snapshots) | ||||
| 
 | ||||
| 		if snapshotLength > snapshotCount { | ||||
| @ -135,24 +120,11 @@ func main() { | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	if ctx.SlackContext != nil { | ||||
| 		err = ctx.SlackContext.SendEvent(fmt.Sprintf("Successfully created Backup for %d Volumes", len(volumeIDs)), log.InfoLevel) | ||||
| 		if err != nil { | ||||
| 			handleError(ctx, err, false) | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func handleError(ctx snapshotterContext, err error, fatal bool) { | ||||
| 	errString := err.Error() | ||||
| 
 | ||||
| 	if ctx.SlackContext != nil { | ||||
| 		err = ctx.SlackContext.SendEvent(errString, log.ErrorLevel) | ||||
| 		if err != nil { | ||||
| 			log.Error(fmt.Sprintf("Error while trying to send error to Slack: %s", err.Error())) | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	if fatal { | ||||
| 		log.Fatal(errString) | ||||
| 	} | ||||
|  | ||||
| @ -1,30 +0,0 @@ | ||||
| package main | ||||
| 
 | ||||
| import ( | ||||
| 	log "github.com/sirupsen/logrus" | ||||
| 	"github.com/slack-go/slack" | ||||
| ) | ||||
| 
 | ||||
| // OutputSource is an abstraction for outputting specific events to other services (e.g. Discord, Slack or Whatsapp)
 | ||||
| type OutputSource interface { | ||||
| 	SendEvent(string, log.Level) error | ||||
| } | ||||
| 
 | ||||
| // SendEvent forwards event to Slack
 | ||||
| func (s SlackContext) SendEvent(content string, level log.Level) error { | ||||
| 
 | ||||
| 	color := "#00FF00" | ||||
| 
 | ||||
| 	if level == log.ErrorLevel { | ||||
| 		color = "#FF0000" | ||||
| 	} | ||||
| 
 | ||||
| 	return s.SendMessageWithEmbed(slack.Attachment{ | ||||
| 		Color:      color, | ||||
| 		AuthorName: "DigitalOceanSnapshotter", | ||||
| 		AuthorIcon: "https://cdn.top.gg/icons/DO_Logo_icon_blue.png", | ||||
| 		Text:       content, | ||||
| 		Title:      "DigitalOceanSnapshotter", | ||||
| 		TitleLink:  "https://github.com/top-gg/DigitalOceanSnapshotter", | ||||
| 	}) | ||||
| } | ||||
| @ -1,21 +0,0 @@ | ||||
| package main | ||||
| 
 | ||||
| import "github.com/slack-go/slack" | ||||
| 
 | ||||
| // SlackContext is an helper struct to acess slack actions
 | ||||
| type SlackContext struct { | ||||
| 	client    *slack.Client | ||||
| 	channelID string | ||||
| } | ||||
| 
 | ||||
| // SendMessageWithContent sends a message with content to the pre defined channel
 | ||||
| func (s SlackContext) SendMessageWithContent(content string) error { | ||||
| 	_, _, _, err := s.client.SendMessage(s.channelID, slack.MsgOptionText(content, true)) | ||||
| 	return err | ||||
| } | ||||
| 
 | ||||
| // SendMessageWithEmbed sends a message with a Rich Embed to the pre defined channel
 | ||||
| func (s SlackContext) SendMessageWithEmbed(attachment slack.Attachment) error { | ||||
| 	_, _, _, err := s.client.SendMessage(s.channelID, slack.MsgOptionAttachments(attachment)) | ||||
| 	return err | ||||
| } | ||||
							
								
								
									
										1
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								go.mod
									
									
									
									
									
								
							| @ -5,5 +5,4 @@ go 1.15 | ||||
| require ( | ||||
| 	github.com/digitalocean/godo v1.57.0 | ||||
| 	github.com/sirupsen/logrus v1.7.0 | ||||
| 	github.com/slack-go/slack v0.8.0 | ||||
| ) | ||||
|  | ||||
							
								
								
									
										9
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								go.sum
									
									
									
									
									
								
							| @ -1,28 +1,19 @@ | ||||
| cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= | ||||
| github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= | ||||
| github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||
| github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= | ||||
| github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||
| github.com/digitalocean/godo v1.57.0 h1:uCpe0sRIZ/sJWxWDsJyBPBjUfSvxop+WHkHiSf+tjjM= | ||||
| github.com/digitalocean/godo v1.57.0/go.mod h1:p7dOjjtSBqCTUksqtA5Fd3uaKs9kyTq2xcz76ulEJRU= | ||||
| github.com/go-test/deep v1.0.4 h1:u2CU3YKy9I2pmu9pX0eq50wCgjfGIt539SqR7FbHiho= | ||||
| github.com/go-test/deep v1.0.4/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= | ||||
| github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= | ||||
| github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= | ||||
| github.com/golang/protobuf v1.3.5 h1:F768QJ1E9tib+q5Sc8MkdJi1RxLTbRcTf8LJV56aRls= | ||||
| github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= | ||||
| github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk= | ||||
| github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= | ||||
| github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= | ||||
| github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= | ||||
| github.com/pkg/errors v0.8.0 h1:WdK/asTD0HN+q6hsWO3/vpuAkAr+tw6aNJNDFFf0+qw= | ||||
| github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | ||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/sirupsen/logrus v1.7.0 h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM= | ||||
| github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= | ||||
| github.com/slack-go/slack v0.8.0 h1:ANyLY5KHLV+MxLJDQum2IuHTLwbCbDtaWY405X1EU9U= | ||||
| github.com/slack-go/slack v0.8.0/go.mod h1:FGqNzJBmxIsZURAxh2a8D21AnOVvvXZvGligs4npPUM= | ||||
| github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | ||||
| github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= | ||||
| github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user