types.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. package http
  2. import (
  3. "context"
  4. "net/mail"
  5. "time"
  6. "github.com/mk6i/retro-aim-server/state"
  7. "github.com/mk6i/retro-aim-server/wire"
  8. )
  9. type ChatRoomRetriever interface {
  10. AllChatRooms(exchange uint16) ([]state.ChatRoom, error)
  11. }
  12. type ChatRoomCreator interface {
  13. CreateChatRoom(chatRoom *state.ChatRoom) error
  14. }
  15. type ChatSessionRetriever interface {
  16. AllSessions(cookie string) []*state.Session
  17. }
  18. type SessionRetriever interface {
  19. AllSessions() []*state.Session
  20. RetrieveByScreenName(screenName state.IdentScreenName) *state.Session
  21. }
  22. type UserManager interface {
  23. AllUsers() ([]state.User, error)
  24. DeleteUser(screenName state.IdentScreenName) error
  25. InsertUser(u state.User) error
  26. SetUserPassword(screenName state.IdentScreenName, newPassword string) error
  27. User(screenName state.IdentScreenName) (*state.User, error)
  28. }
  29. type MessageRelayer interface {
  30. RelayToScreenName(ctx context.Context, screenName state.IdentScreenName, msg wire.SNACMessage)
  31. }
  32. type AccountRetriever interface {
  33. EmailAddressByName(screenName state.IdentScreenName) (*mail.Address, error)
  34. RegStatusByName(screenName state.IdentScreenName) (uint16, error)
  35. ConfirmStatusByName(screnName state.IdentScreenName) (bool, error)
  36. }
  37. type BARTRetriever interface {
  38. BARTRetrieve(itemHash []byte) ([]byte, error)
  39. }
  40. type FeedBagRetriever interface {
  41. BuddyIconRefByName(screenName state.IdentScreenName) (*wire.BARTID, error)
  42. }
  43. type userWithPassword struct {
  44. ScreenName string `json:"screen_name"`
  45. Password string `json:"password,omitempty"`
  46. }
  47. type onlineUsers struct {
  48. Count int `json:"count"`
  49. Sessions []sessionHandle `json:"sessions"`
  50. }
  51. type userHandle struct {
  52. ID string `json:"id"`
  53. ScreenName string `json:"screen_name"`
  54. IsICQ bool `json:"is_icq"`
  55. }
  56. type aimChatUserHandle struct {
  57. ID string `json:"id"`
  58. ScreenName string `json:"screen_name"`
  59. }
  60. type userAccountHandle struct {
  61. ID string `json:"id"`
  62. ScreenName string `json:"screen_name"`
  63. Profile string `json:"profile"`
  64. EmailAddress string `json:"email_address"`
  65. RegStatus uint16 `json:"reg_status"`
  66. Confirmed bool `json:"confirmed"`
  67. IsICQ bool `json:"is_icq"`
  68. }
  69. type sessionHandle struct {
  70. ID string `json:"id"`
  71. ScreenName string `json:"screen_name"`
  72. OnlineSeconds float64 `json:"online_seconds"`
  73. AwayMessage string `json:"away_message"`
  74. IdleSeconds float64 `json:"idle_seconds"`
  75. IsICQ bool `json:"is_icq"`
  76. }
  77. type ProfileRetriever interface {
  78. Profile(screenName state.IdentScreenName) (string, error)
  79. }
  80. type chatRoomCreate struct {
  81. Name string `json:"name"`
  82. }
  83. type chatRoom struct {
  84. Name string `json:"name"`
  85. CreateTime time.Time `json:"create_time"`
  86. CreatorID string `json:"creator_id,omitempty"`
  87. URL string `json:"url"`
  88. Participants []aimChatUserHandle `json:"participants"`
  89. }
  90. type instantMessage struct {
  91. From string `json:"from"`
  92. To string `json:"to"`
  93. Text string `json:"text"`
  94. }