types.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package handler
  2. import (
  3. "context"
  4. "time"
  5. "github.com/mkaminski/goaim/oscar"
  6. "github.com/mkaminski/goaim/state"
  7. )
  8. type FeedbagManager interface {
  9. Blocked(sn1, sn2 string) (state.BlockedState, error)
  10. Buddies(screenName string) ([]string, error)
  11. Delete(screenName string, items []oscar.FeedbagItem) error
  12. InterestedUsers(screenName string) ([]string, error)
  13. LastModified(screenName string) (time.Time, error)
  14. Retrieve(screenName string) ([]oscar.FeedbagItem, error)
  15. Upsert(screenName string, items []oscar.FeedbagItem) error
  16. }
  17. type UserManager interface {
  18. GetUser(screenName string) (*state.User, error)
  19. UpsertUser(u state.User) error
  20. }
  21. type SessionManager interface {
  22. Broadcast(ctx context.Context, msg oscar.XMessage)
  23. BroadcastToScreenNames(ctx context.Context, screenNames []string, msg oscar.XMessage)
  24. Empty() bool
  25. NewSessionWithSN(sessID string, screenName string) *state.Session
  26. Remove(sess *state.Session)
  27. Retrieve(ID string) (*state.Session, bool)
  28. RetrieveByScreenName(screenName string) *state.Session
  29. SendToScreenName(ctx context.Context, screenName string, msg oscar.XMessage)
  30. }
  31. type ChatSessionManager interface {
  32. SessionManager
  33. BroadcastExcept(ctx context.Context, except *state.Session, msg oscar.XMessage)
  34. Participants() []*state.Session
  35. }
  36. type ProfileManager interface {
  37. RetrieveProfile(screenName string) (string, error)
  38. UpsertProfile(screenName string, body string) error
  39. }