2
0
mirror of https://github.com/42wim/matterbridge synced 2024-11-17 03:26:07 +00:00
matterbridge/vendor/github.com/slack-go/slack/slackutilsx/slackutilsx.go
2022-04-25 23:50:10 +02:00

65 lines
1.5 KiB
Go

// Package slackutilsx is a utility package that doesn't promise API stability.
// its for experimental functionality and utilities.
package slackutilsx
import (
"strings"
"unicode/utf8"
)
// ChannelType the type of channel based on the channelID
type ChannelType int
func (t ChannelType) String() string {
switch t {
case CTypeDM:
return "Direct"
case CTypeGroup:
return "Group"
case CTypeChannel:
return "Channel"
default:
return "Unknown"
}
}
const (
// CTypeUnknown represents channels we cannot properly detect.
CTypeUnknown ChannelType = iota
// CTypeDM is a private channel between two slack users.
CTypeDM
// CTypeGroup is a group channel.
CTypeGroup
// CTypeChannel is a public channel.
CTypeChannel
)
// DetectChannelType converts a channelID to a ChannelType.
// channelID must not be empty. However, if it is empty, the channel type will default to Unknown.
func DetectChannelType(channelID string) ChannelType {
// intentionally ignore the error and just default to CTypeUnknown
switch r, _ := utf8.DecodeRuneInString(channelID); r {
case 'C':
return CTypeChannel
case 'G':
return CTypeGroup
case 'D':
return CTypeDM
default:
return CTypeUnknown
}
}
// initialize replacer only once (if needed)
var escapeReplacer = strings.NewReplacer("&", "&amp;", "<", "&lt;", ">", "&gt;")
// EscapeMessage text
func EscapeMessage(message string) string {
return escapeReplacer.Replace(message)
}
// Retryable errors return true.
type Retryable interface {
Retryable() bool
}