lobby/server/types.go

53 lines
1.0 KiB
Go

package server
import "strings"
// Label keeps one piece of information about a single server
type Label string
func (l Label) String() string {
return string(l)
}
// GetPart returns specific part of the label, if part index is higher than last available index it returns empty string.
func (l Label) GetPart(idx int) string {
parts := strings.Split(l.String(), ":")
if idx < 0 {
return ""
}
if len(parts) >= idx {
return ""
}
return parts[idx]
}
// GetPart1 is exactly same as GetPart but it splits the label only once, this is good for IPv6 addresses
func (l Label) GetPart1(idx int) string {
parts := strings.SplitN(l.String(), ":", 2)
if idx < 0 {
return ""
}
if len(parts) >= idx {
return ""
}
return parts[idx]
}
// Labels stores multiple Label records
type Labels []Label
// StringSlice return slice of Label as strings
func (l *Labels) StringSlice() []string {
labelsString := []string{}
for _, label := range *l {
labelsString = append(labelsString, label.String())
}
return labelsString
}