permit_deny.go 1011 B

123456789101112131415161718192021222324252627282930313233343536
  1. package handler
  2. import (
  3. "context"
  4. "io"
  5. "log/slog"
  6. "github.com/mk6i/retro-aim-server/server/oscar"
  7. "github.com/mk6i/retro-aim-server/server/oscar/middleware"
  8. "github.com/mk6i/retro-aim-server/state"
  9. "github.com/mk6i/retro-aim-server/wire"
  10. )
  11. type PermitDenyService interface {
  12. RightsQuery(_ context.Context, frame wire.SNACFrame) wire.SNACMessage
  13. }
  14. func NewPermitDenyHandler(logger *slog.Logger, permitDenyService PermitDenyService) PermitDenyHandler {
  15. return PermitDenyHandler{
  16. RouteLogger: middleware.RouteLogger{
  17. Logger: logger,
  18. },
  19. PermitDenyService: permitDenyService,
  20. }
  21. }
  22. type PermitDenyHandler struct {
  23. PermitDenyService
  24. middleware.RouteLogger
  25. }
  26. func (rt PermitDenyHandler) RightsQuery(ctx context.Context, _ *state.Session, inFrame wire.SNACFrame, _ io.Reader, rw oscar.ResponseWriter) error {
  27. outSNAC := rt.PermitDenyService.RightsQuery(ctx, inFrame)
  28. rt.LogRequestAndResponse(ctx, inFrame, nil, outSNAC.Frame, outSNAC.Body)
  29. return rw.SendSNAC(outSNAC.Frame, outSNAC.Body)
  30. }