bridge.go 805 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package config
  2. import (
  3. "bytes"
  4. "text/template"
  5. )
  6. type bridge struct {
  7. UsernameTemplate string `yaml:"username_template"`
  8. usernameTemplate *template.Template `yaml:"-"`
  9. }
  10. func (b *bridge) validate() error {
  11. var err error
  12. if b.UsernameTemplate == "" {
  13. b.UsernameTemplate = "Discord_{{.}}"
  14. }
  15. b.usernameTemplate, err = template.New("username").Parse(b.UsernameTemplate)
  16. if err != nil {
  17. return err
  18. }
  19. return nil
  20. }
  21. func (b *bridge) UnmarshalYAML(unmarshal func(interface{}) error) error {
  22. type rawBridge bridge
  23. raw := rawBridge{}
  24. err := unmarshal(&raw)
  25. if err != nil {
  26. return err
  27. }
  28. *b = bridge(raw)
  29. return b.validate()
  30. }
  31. func (b bridge) FormatUsername(userid string) string {
  32. var buffer bytes.Buffer
  33. b.usernameTemplate.Execute(&buffer, userid)
  34. return buffer.String()
  35. }