package api import ( "encoding/json" "errors" "net/http" "gitea.mrixs.me/minecraft-platform/backend/internal/core" "gitea.mrixs.me/minecraft-platform/backend/internal/database" "gitea.mrixs.me/minecraft-platform/backend/internal/models" ) type UserHandler struct { Service *core.UserService } func (h *UserHandler) Register(w http.ResponseWriter, r *http.Request) { var req models.RegisterRequest if err := json.NewDecoder(r.Body).Decode(&req); err != nil { http.Error(w, "Invalid request body", http.StatusBadRequest) return } err := h.Service.RegisterNewUser(r.Context(), req) if err != nil { switch { case errors.Is(err, database.ErrUserExists): http.Error(w, err.Error(), http.StatusConflict) case errors.Is(err, core.ErrInvalidUsername), errors.Is(err, core.ErrInvalidEmail), errors.Is(err, core.ErrPasswordTooShort): http.Error(w, err.Error(), http.StatusBadRequest) default: http.Error(w, "Internal server error", http.StatusInternalServerError) } return } w.WriteHeader(http.StatusCreated) }