handler.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package webapi
  2. import (
  3. "context"
  4. "encoding/json"
  5. "fmt"
  6. "log/slog"
  7. "net/http"
  8. "github.com/mk6i/open-oscar-server/state"
  9. "github.com/mk6i/open-oscar-server/wire"
  10. )
  11. type Handler struct {
  12. AdminService AdminService
  13. AuthService AuthService
  14. BuddyListRegistry BuddyListRegistry
  15. BuddyService BuddyService
  16. ChatNavService ChatNavService
  17. ChatService ChatService
  18. CookieBaker CookieBaker
  19. DirSearchService DirSearchService
  20. ICBMService ICBMService
  21. LocateService LocateService
  22. Logger *slog.Logger
  23. OServiceService OServiceService
  24. PermitDenyService PermitDenyService
  25. TOCConfigStore TOCConfigStore
  26. SNACRateLimits wire.SNACRateLimits
  27. // New fields for WebAPI handlers
  28. SessionRetriever SessionRetriever
  29. FeedbagRetriever FeedbagRetriever
  30. FeedbagManager FeedbagManager
  31. // Phase 2 additions
  32. MessageRelayer MessageRelayer
  33. OfflineMessageManager OfflineMessageManager
  34. BuddyBroadcaster BuddyBroadcaster
  35. ProfileManager ProfileManager
  36. RelationshipFetcher interface {
  37. Relationship(ctx context.Context, me state.IdentScreenName, them state.IdentScreenName) (state.Relationship, error)
  38. }
  39. // Phase 3 additions
  40. PreferenceManager PreferenceManager
  41. PermitDenyManager PermitDenyManager
  42. // Phase 4 additions for OSCAR Bridge
  43. OSCARBridgeStore OSCARBridgeStore
  44. OSCARConfig OSCARConfig
  45. // Phase 5 additions for buddy list and messaging
  46. BuddyListManager interface{}
  47. // Phase 5 additions for chat rooms
  48. ChatManager *state.WebAPIChatManager
  49. RecalcWarning func(ctx context.Context, instance *state.SessionInstance) error
  50. LowerWarnLevel func(ctx context.Context, instance *state.SessionInstance)
  51. ChatSessionManager ChatSessionManager
  52. FeedbagService FeedbagService
  53. }
  54. func (h Handler) GetHelloWorldHandler(w http.ResponseWriter, r *http.Request) {
  55. h.Logger.Info("got a request to the root endpoint", "method", r.Method, "path", r.URL.Path)
  56. _, _ = fmt.Fprintf(w, "WebAPI Server Running\n")
  57. // Must return the same JSON envelope as other Web AIM APIs.
  58. h.Logger.Info("webapi root GET", "remote", r.RemoteAddr, "host", r.Host, "path", r.URL.Path)
  59. w.Header().Set("Content-Type", "application/json; charset=utf-8")
  60. resp := map[string]interface{}{
  61. "response": map[string]interface{}{
  62. "statusCode": 200,
  63. "statusText": "OK",
  64. "data": map[string]interface{}{},
  65. },
  66. }
  67. _ = json.NewEncoder(w).Encode(resp)
  68. }