🐛 fix: Fix model name not URL encoded in pricing

This commit is contained in:
Martial BE 2024-04-01 09:47:58 +08:00
parent 91a113d09b
commit 6300ce4835
No known key found for this signature in database
GPG Key ID: D06C32DF0EDB9084
3 changed files with 13 additions and 6 deletions

View File

@ -3,6 +3,7 @@ package controller
import ( import (
"errors" "errors"
"net/http" "net/http"
"net/url"
"one-api/common" "one-api/common"
"one-api/model" "one-api/model"
"one-api/relay/util" "one-api/relay/util"
@ -80,10 +81,12 @@ func AddPrice(c *gin.Context) {
func UpdatePrice(c *gin.Context) { func UpdatePrice(c *gin.Context) {
modelName := c.Param("model") modelName := c.Param("model")
if modelName == "" { if modelName == "" || len(modelName) < 2 {
common.APIRespondWithError(c, http.StatusOK, errors.New("model name is required")) common.APIRespondWithError(c, http.StatusOK, errors.New("model name is required"))
return return
} }
modelName = modelName[1:]
modelName, _ = url.PathUnescape(modelName)
var price model.Price var price model.Price
if err := c.ShouldBindJSON(&price); err != nil { if err := c.ShouldBindJSON(&price); err != nil {
@ -104,10 +107,12 @@ func UpdatePrice(c *gin.Context) {
func DeletePrice(c *gin.Context) { func DeletePrice(c *gin.Context) {
modelName := c.Param("model") modelName := c.Param("model")
if modelName == "" { if modelName == "" || len(modelName) < 2 {
common.APIRespondWithError(c, http.StatusOK, errors.New("model name is required")) common.APIRespondWithError(c, http.StatusOK, errors.New("model name is required"))
return return
} }
modelName = modelName[1:]
modelName, _ = url.PathUnescape(modelName)
if err := util.PricingInstance.DeletePrice(modelName); err != nil { if err := util.PricingInstance.DeletePrice(modelName); err != nil {
common.APIRespondWithError(c, http.StatusOK, err) common.APIRespondWithError(c, http.StatusOK, err)

View File

@ -137,8 +137,8 @@ func SetApiRouter(router *gin.Engine) {
{ {
pricesRoute.GET("/model_list", controller.GetAllModelList) pricesRoute.GET("/model_list", controller.GetAllModelList)
pricesRoute.POST("/single", controller.AddPrice) pricesRoute.POST("/single", controller.AddPrice)
pricesRoute.PUT("/single/:model", controller.UpdatePrice) pricesRoute.PUT("/single/*model", controller.UpdatePrice)
pricesRoute.DELETE("/single/:model", controller.DeletePrice) pricesRoute.DELETE("/single/*model", controller.DeletePrice)
pricesRoute.POST("/multiple", controller.BatchSetPrices) pricesRoute.POST("/multiple", controller.BatchSetPrices)
pricesRoute.PUT("/multiple/delete", controller.BatchDeletePrices) pricesRoute.PUT("/multiple/delete", controller.BatchDeletePrices)
pricesRoute.POST("/sync", controller.SyncPricing) pricesRoute.POST("/sync", controller.SyncPricing)

View File

@ -79,7 +79,8 @@ const Single = ({ ownedby, prices, reloadData }) => {
if (oldRow.model == '') { if (oldRow.model == '') {
res = await API.post('/api/prices/single', newRow); res = await API.post('/api/prices/single', newRow);
} else { } else {
res = await API.put('/api/prices/single/' + oldRow.model, newRow); let modelEncode = encodeURIComponent(oldRow.model);
res = await API.put('/api/prices/single/' + modelEncode, newRow);
} }
const { success, message } = res.data; const { success, message } = res.data;
if (success) { if (success) {
@ -282,7 +283,8 @@ const Single = ({ ownedby, prices, reloadData }) => {
const deletePirces = async (modelName) => { const deletePirces = async (modelName) => {
try { try {
const res = await API.delete('/api/prices/single/' + modelName); let modelEncode = encodeURIComponent(modelName);
const res = await API.delete('/api/prices/single/' + modelEncode);
const { success, message } = res.data; const { success, message } = res.data;
if (success) { if (success) {
showSuccess('保存成功'); showSuccess('保存成功');