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

View File

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

View File

@ -79,7 +79,8 @@ const Single = ({ ownedby, prices, reloadData }) => {
if (oldRow.model == '') {
res = await API.post('/api/prices/single', newRow);
} 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;
if (success) {
@ -282,7 +283,8 @@ const Single = ({ ownedby, prices, reloadData }) => {
const deletePirces = async (modelName) => {
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;
if (success) {
showSuccess('保存成功');