修复了EQ 曲线接口中,+没有转义成空格的 bug
This commit is contained in:
@@ -8,7 +8,6 @@ import (
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
@@ -54,8 +53,8 @@ func NewCurveHandler(repo *repository.CurveRepository, curveCache *cache.CurveCa
|
||||
//
|
||||
// GET /audio/modelCurve?brand=xxx&name=xxx&base64Resp=true
|
||||
func (h *CurveHandler) ModelCurve(c *gin.Context) {
|
||||
brand := strings.TrimSpace(queryParam(c, "brand"))
|
||||
name := strings.TrimSpace(queryParam(c, "name"))
|
||||
brand := strings.TrimSpace(c.Query("brand"))
|
||||
name := strings.TrimSpace(c.Query("name"))
|
||||
base64Resp := encode.ParseBase64Param(c)
|
||||
|
||||
if brand == "" || name == "" {
|
||||
@@ -143,9 +142,8 @@ func (h *CurveHandler) ModelCurve(c *gin.Context) {
|
||||
//
|
||||
// GET /audio/getCurve?brand=xxx&name=xxx&target=xxx&base64Resp=true
|
||||
func (h *CurveHandler) GetCurve(c *gin.Context) {
|
||||
brand := strings.TrimSpace(queryParam(c, "brand"))
|
||||
name := strings.TrimSpace(queryParam(c, "name"))
|
||||
// target 使用标准 query 解码:+ 表示空格(如 Harman+over-ear+2018 → Harman over-ear 2018)
|
||||
brand := strings.TrimSpace(c.Query("brand"))
|
||||
name := strings.TrimSpace(c.Query("name"))
|
||||
target := strings.TrimSpace(c.Query("target"))
|
||||
base64Resp := encode.ParseBase64Param(c)
|
||||
|
||||
@@ -557,25 +555,3 @@ func intVal(m map[string]any, key string, defaultVal int) int {
|
||||
return defaultVal
|
||||
}
|
||||
}
|
||||
|
||||
// queryParam 从 URL 原始 query 中获取参数,保留 + 为字面量而非空格
|
||||
func queryParam(c *gin.Context, key string) string {
|
||||
vals, ok := c.Request.URL.Query()[key]
|
||||
if !ok || len(vals) == 0 {
|
||||
return ""
|
||||
}
|
||||
// c.Query() 会把 + 解码为空格,这里从原始 query 手动解码,+ 保留为 +
|
||||
if strings.Contains(vals[0], " ") {
|
||||
rawQuery := c.Request.URL.RawQuery
|
||||
for _, pair := range strings.Split(rawQuery, "&") {
|
||||
kv := strings.SplitN(pair, "=", 2)
|
||||
if len(kv) == 2 && kv[0] == key {
|
||||
decoded, err := url.PathUnescape(strings.ReplaceAll(kv[1], "+", "%2B"))
|
||||
if err == nil {
|
||||
return decoded
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return vals[0]
|
||||
}
|
||||
|
||||
@@ -44,9 +44,9 @@ func NewModelCSVHandler(s3 *storage.S3Storage, log *zap.Logger) *ModelCSVHandler
|
||||
//
|
||||
// GET /audio/getModelCSV?brand=Abyss&model=Dinan DZ&form=over-ear&base64Resp=true
|
||||
func (h *ModelCSVHandler) GetModelCSV(c *gin.Context) {
|
||||
brand := strings.TrimSpace(queryParam(c, "brand"))
|
||||
model := strings.TrimSpace(queryParam(c, "model"))
|
||||
form := strings.TrimSpace(queryParam(c, "form"))
|
||||
brand := strings.TrimSpace(c.Query("brand"))
|
||||
model := strings.TrimSpace(c.Query("model"))
|
||||
form := strings.TrimSpace(c.Query("form"))
|
||||
base64Resp := encode.ParseBase64Param(c)
|
||||
|
||||
if brand == "" || model == "" || form == "" {
|
||||
|
||||
Reference in New Issue
Block a user