types.go 1.2 KB

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