expressions.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package handlers
  2. import (
  3. "log/slog"
  4. "net/http"
  5. )
  6. // ExpressionsHandler handles Web AIM API expressions/buddy icon endpoints.
  7. type ExpressionsHandler struct {
  8. Logger *slog.Logger
  9. }
  10. // NewExpressionsHandler creates a new ExpressionsHandler.
  11. func NewExpressionsHandler(logger *slog.Logger) *ExpressionsHandler {
  12. return &ExpressionsHandler{
  13. Logger: logger,
  14. }
  15. }
  16. // Get handles GET /expressions/get requests for buddy icons and expressions.
  17. func (h *ExpressionsHandler) Get(w http.ResponseWriter, r *http.Request) {
  18. // Parse parameters
  19. format := r.URL.Query().Get("f")
  20. targetUser := r.URL.Query().Get("t")
  21. expressionType := r.URL.Query().Get("type")
  22. h.Logger.Debug("expressions/get request",
  23. "format", format,
  24. "target", targetUser,
  25. "type", expressionType,
  26. )
  27. // For redirect format, return a 404 (no buddy icon)
  28. // In a real implementation, this would redirect to the actual icon URL
  29. if format == "redirect" {
  30. w.WriteHeader(http.StatusNotFound)
  31. return
  32. }
  33. // For other formats, return an empty response indicating no expressions
  34. response := map[string]interface{}{
  35. "response": map[string]interface{}{
  36. "statusCode": 200,
  37. "statusText": "OK",
  38. "data": map[string]interface{}{
  39. "expressions": []interface{}{},
  40. },
  41. },
  42. }
  43. // Send response in requested format
  44. SendResponse(w, r, response, h.Logger)
  45. }