types.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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. ScreenName string `json:"screen_name"`
  32. Password string `json:"password,omitempty"`
  33. }
  34. type onlineUsers struct {
  35. Count int `json:"count"`
  36. Sessions []userHandle `json:"sessions"`
  37. }
  38. type userHandle struct {
  39. ID string `json:"id"`
  40. ScreenName string `json:"screen_name"`
  41. }
  42. type chatRoomCreate struct {
  43. Name string `json:"name"`
  44. }
  45. type chatRoom struct {
  46. Name string `json:"name"`
  47. CreateTime time.Time `json:"create_time"`
  48. CreatorID string `json:"creator_id,omitempty"`
  49. URL string `json:"url"`
  50. Participants []userHandle `json:"participants"`
  51. }
  52. type instantMessage struct {
  53. From string `json:"from"`
  54. To string `json:"to"`
  55. Text string `json:"text"`
  56. }