types.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. package server
  2. import (
  3. "context"
  4. "github.com/mkaminski/goaim/oscar"
  5. "github.com/mkaminski/goaim/user"
  6. "time"
  7. )
  8. type FeedbagManager interface {
  9. Blocked(sn1, sn2 string) (user.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 SessionManager interface {
  18. Broadcast(ctx context.Context, msg oscar.XMessage)
  19. BroadcastExcept(ctx context.Context, except *user.Session, msg oscar.XMessage)
  20. BroadcastToScreenNames(ctx context.Context, screenNames []string, msg oscar.XMessage)
  21. Empty() bool
  22. NewSessionWithSN(sessID string, screenName string) *user.Session
  23. Participants() []*user.Session
  24. Remove(sess *user.Session)
  25. Retrieve(ID string) (*user.Session, bool)
  26. RetrieveByScreenName(screenName string) *user.Session
  27. SendToScreenName(ctx context.Context, screenName string, msg oscar.XMessage)
  28. }
  29. type ProfileManager interface {
  30. RetrieveProfile(screenName string) (string, error)
  31. UpsertProfile(screenName string, body string) error
  32. }