2f615df34d
fix error handling (FINALLY) fix slack message formatting add locking for wallet setup to support concurrency remove UTXO bug workaround (lbryumx should fix it) add limits to filesize
83 lines
2 KiB
Go
83 lines
2 KiB
Go
package util
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/lbryio/lbry.go/errors"
|
|
"github.com/nlopes/slack"
|
|
log "github.com/sirupsen/logrus"
|
|
)
|
|
|
|
var defaultChannel string
|
|
var defaultUsername string
|
|
var slackApi *slack.Client
|
|
|
|
// InitSlack Initializes a slack client with the given token and sets the default channel.
|
|
func InitSlack(token string, channel string, username string) {
|
|
slackApi = slack.New(token)
|
|
defaultChannel = channel
|
|
defaultUsername = username
|
|
}
|
|
func SendToSlackInfo(format string, a ...interface{}) {
|
|
message := format
|
|
if len(a) > 0 {
|
|
message = fmt.Sprintf(format, a...)
|
|
}
|
|
if slackApi != nil {
|
|
sendToSlack(":information_source: " + message)
|
|
}
|
|
log.Debugln(message)
|
|
}
|
|
func SendToSlackError(format string, a ...interface{}) {
|
|
message := format
|
|
if len(a) > 0 {
|
|
message = fmt.Sprintf(format, a...)
|
|
}
|
|
if slackApi != nil {
|
|
sendToSlack(":sos: " + message)
|
|
}
|
|
log.Errorln(message)
|
|
}
|
|
|
|
// SendToSlackUser Sends message to a specific user.
|
|
func SendToSlackUser(user, username, message string) error {
|
|
if !strings.HasPrefix(user, "@") {
|
|
user = "@" + user
|
|
}
|
|
return sendToSlack(user, username, message)
|
|
}
|
|
|
|
// SendToSlackChannel Sends message to a specific channel.
|
|
func SendToSlackChannel(channel, username, message string) error {
|
|
if !strings.HasPrefix(channel, "#") {
|
|
channel = "#" + channel
|
|
}
|
|
return sendToSlack(channel, username, message)
|
|
}
|
|
|
|
// SendToSlack Sends message to the default channel.
|
|
func SendToSlack(message string) error {
|
|
|
|
if defaultChannel == "" {
|
|
return errors.Err("no default slack channel set")
|
|
}
|
|
|
|
return sendToSlack(defaultChannel, defaultUsername, message)
|
|
}
|
|
|
|
func sendToSlack(channel, username, message string) error {
|
|
var err error
|
|
if slackApi == nil {
|
|
err = errors.Err("no slack token provided")
|
|
} else {
|
|
log.Debugln("slack: " + channel + ": " + message)
|
|
_, _, err = slackApi.PostMessage(channel, message, slack.PostMessageParameters{Username: username})
|
|
}
|
|
|
|
if err != nil {
|
|
log.Errorln("error sending to slack: " + err.Error())
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|