mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-09-30 06:16:37 +08:00
33a1c32cf8
Reorganize internal packages into platform/infra/shared layers and update imports, docs, and seed-count tests to match current system configs.
45 lines
1.1 KiB
Go
45 lines
1.1 KiB
Go
// Copyright 2026 Arctel.net
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
// Package apiutil provides HTTP helpers for OpenFlare v1 custom API handlers.
|
|
package apiutil
|
|
|
|
import (
|
|
"strconv"
|
|
|
|
"github.com/Rain-kl/Wavelet/internal/shared/response"
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
const errInvalidParams = "参数错误"
|
|
const errInvalidID = "无效的 ID"
|
|
|
|
// BindJSON binds JSON body; returns false after aborting with 400.
|
|
func BindJSON(c *gin.Context, dst any) bool {
|
|
if err := c.ShouldBindJSON(dst); err != nil {
|
|
response.AbortBadRequest(c, errInvalidParams)
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
// IDParam parses :id from the URL path.
|
|
func IDParam(c *gin.Context) (uint, bool) {
|
|
return NamedIDParam(c, "id")
|
|
}
|
|
|
|
// NamedIDParam parses a named path parameter as a positive uint ID.
|
|
func NamedIDParam(c *gin.Context, name string) (uint, bool) {
|
|
raw := c.Param(name)
|
|
if raw == "" {
|
|
response.AbortBadRequest(c, errInvalidID)
|
|
return 0, false
|
|
}
|
|
id64, err := strconv.ParseUint(raw, 10, 64)
|
|
if err != nil || id64 == 0 {
|
|
response.AbortBadRequest(c, errInvalidID)
|
|
return 0, false
|
|
}
|
|
return uint(id64), true
|
|
}
|