types.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package handler
  2. import (
  3. "context"
  4. "time"
  5. "github.com/mk6i/retro-aim-server/oscar"
  6. "github.com/mk6i/retro-aim-server/state"
  7. )
  8. type FeedbagManager interface {
  9. BlockedState(screenName1, screenName2 string) (state.BlockedState, error)
  10. Buddies(screenName string) ([]string, error)
  11. FeedbagDelete(screenName string, items []oscar.FeedbagItem) error
  12. AdjacentUsers(screenName string) ([]string, error)
  13. FeedbagLastModified(screenName string) (time.Time, error)
  14. Feedbag(screenName string) ([]oscar.FeedbagItem, error)
  15. FeedbagUpsert(screenName string, items []oscar.FeedbagItem) error
  16. }
  17. type UserManager interface {
  18. User(screenName string) (*state.User, error)
  19. InsertUser(u state.User) error
  20. }
  21. type SessionManager interface {
  22. Empty() bool
  23. AddSession(sessID string, screenName string) *state.Session
  24. RemoveSession(sess *state.Session)
  25. RetrieveSession(ID string) *state.Session
  26. }
  27. type ProfileManager interface {
  28. Profile(screenName string) (string, error)
  29. SetProfile(screenName string, body string) error
  30. }
  31. type MessageRelayer interface {
  32. RelayToScreenNames(ctx context.Context, screenNames []string, msg oscar.SNACMessage)
  33. RetrieveByScreenName(screenName string) *state.Session
  34. RelayToScreenName(ctx context.Context, screenName string, msg oscar.SNACMessage)
  35. }
  36. type ChatMessageRelayer interface {
  37. MessageRelayer
  38. RelayToAllExcept(ctx context.Context, except *state.Session, msg oscar.SNACMessage)
  39. AllSessions() []*state.Session
  40. }
  41. type ChatRegistry interface {
  42. Register(room state.ChatRoom, sessionManager any)
  43. Retrieve(chatID string) (state.ChatRoom, any, error)
  44. Remove(chatID string)
  45. }