types.go 1.3 KB

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