bridge.go 1.0 KB

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