提交
This commit is contained in:
78
internal/controller/copilot/utils.go
Normal file
78
internal/controller/copilot/utils.go
Normal file
@@ -0,0 +1,78 @@
|
||||
package copilot
|
||||
|
||||
import (
|
||||
_ "embed"
|
||||
"encoding/json"
|
||||
"github.com/gofrs/uuid"
|
||||
"io"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"time"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type Pong struct {
|
||||
Now int `json:"now"`
|
||||
Status string `json:"status"`
|
||||
Ns1 string `json:"ns1"`
|
||||
}
|
||||
|
||||
// GetPing 模拟ping接口
|
||||
func GetPing(ctx *gin.Context) {
|
||||
requestID := uuid.Must(uuid.NewV4()).String()
|
||||
ctx.Header("x-github-request-id", requestID)
|
||||
|
||||
ctx.JSON(http.StatusOK, Pong{
|
||||
Now: time.Now().Second(),
|
||||
Status: "ok",
|
||||
Ns1: "200 OK",
|
||||
})
|
||||
}
|
||||
|
||||
// ModelsResponse 模型列表响应结构
|
||||
type ModelsResponse struct {
|
||||
Data []interface{} `json:"data"`
|
||||
Object string `json:"object"`
|
||||
}
|
||||
|
||||
// GetModels 获取模型列表
|
||||
func GetModels(ctx *gin.Context) {
|
||||
// 从根目录下读取models.json文件
|
||||
jsonFile, err := os.Open(filepath.Join("models.json"))
|
||||
if err != nil {
|
||||
log.Printf("无法打开models.json文件: %v", err)
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{"error": "无法读取模型列表数据"})
|
||||
return
|
||||
}
|
||||
defer CloseIO(jsonFile)
|
||||
|
||||
// 解析JSON数据
|
||||
jsonData, err := io.ReadAll(jsonFile)
|
||||
if err != nil {
|
||||
log.Printf("读取models.json内容失败: %v", err)
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{"error": "无法读取模型列表数据"})
|
||||
return
|
||||
}
|
||||
|
||||
var modelsResponse ModelsResponse
|
||||
if err := json.Unmarshal(jsonData, &modelsResponse); err != nil {
|
||||
log.Printf("解析models.json失败: %v", err)
|
||||
ctx.JSON(http.StatusInternalServerError, gin.H{"error": "无法解析模型列表数据"})
|
||||
return
|
||||
}
|
||||
|
||||
// 返回模型列表数据
|
||||
requestID := uuid.Must(uuid.NewV4()).String()
|
||||
ctx.Header("x-github-request-id", requestID)
|
||||
ctx.JSON(http.StatusOK, modelsResponse)
|
||||
}
|
||||
|
||||
func CloseIO(c io.Closer) {
|
||||
err := c.Close()
|
||||
if nil != err {
|
||||
log.Println(err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user