types.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package http
  2. import (
  3. "context"
  4. "time"
  5. "github.com/mk6i/retro-aim-server/state"
  6. "github.com/mk6i/retro-aim-server/wire"
  7. )
  8. type ChatRoomRetriever interface {
  9. AllChatRooms(exchange uint16) ([]state.ChatRoom, error)
  10. }
  11. type ChatRoomCreator interface {
  12. CreateChatRoom(chatRoom state.ChatRoom) error
  13. }
  14. type ChatSessionRetriever interface {
  15. AllSessions(cookie string) []*state.Session
  16. }
  17. type SessionRetriever interface {
  18. AllSessions() []*state.Session
  19. }
  20. type UserManager interface {
  21. AllUsers() ([]state.User, error)
  22. DeleteUser(screenName state.IdentScreenName) error
  23. InsertUser(u state.User) error
  24. SetUserPassword(u state.User) error
  25. User(screenName state.IdentScreenName) (*state.User, error)
  26. }
  27. type MessageRelayer interface {
  28. RelayToScreenName(ctx context.Context, screenName state.IdentScreenName, msg wire.SNACMessage)
  29. }
  30. type userWithPassword struct {
  31. state.User
  32. Password string `json:"password,omitempty"`
  33. }
  34. type userSession struct {
  35. ScreenName string `json:"screen_name"`
  36. }
  37. type onlineUsers struct {
  38. Count int `json:"count"`
  39. Sessions []userSession `json:"sessions"`
  40. }
  41. type userHandle struct {
  42. ID string `json:"id"`
  43. ScreenName string `json:"screen_name"`
  44. }
  45. type chatRoomCreate struct {
  46. Name string `json:"name"`
  47. }
  48. type chatRoom struct {
  49. Name string `json:"name"`
  50. CreateTime time.Time `json:"create_time"`
  51. CreatorID string `json:"creator_id,omitempty"`
  52. URL string `json:"url"`
  53. Participants []userHandle `json:"participants"`
  54. }
  55. type instantMessage struct {
  56. From string `json:"from"`
  57. To string `json:"to"`
  58. Text string `json:"text"`
  59. }