bridge.go 1.2 KB

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