pcm-openi/router/router.go

113 lines
3.5 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package router
import (
"fmt"
"github.com/gin-gonic/gin"
"gitlink.org.cn/JointCloud/pcm-openi/apis"
"gitlink.org.cn/JointCloud/pcm-openi/config"
"gitlink.org.cn/JointCloud/pcm-openi/err"
"regexp"
"time"
)
func Create(conf *config.Configuration) (*gin.Engine, error) {
g := gin.New()
g.Use(gin.LoggerWithFormatter(logFormatter), gin.Recovery())
g.NoRoute(err.Handler())
g.Use(gin.Logger())
g.Use(gin.Recovery())
//g.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
//handler := api.TestApi{}
api := g.Group("/api")
v1 := api.Group("/v1")
{
//user
user := v1.Group("user")
user.GET("", apis.GetUserInfo)
//repo
repoApi := apis.RepoApi
repo := v1.Group("user")
repo.GET("/repos", apis.GetRepos)
repo.POST("/repos", apis.CreateRepo)
repo.POST("/repos/uploadFile", repoApi.UploadFile2Repo) //上传文件到项目中
repo.PUT("/repos/updateFile", repoApi.UpdateFile2Repo) //修改项目文件
repo.GET("/repos/queryFileContent", repoApi.QueryRepoFilesContent) //查询项目文件内容
//image
image := v1.Group("image")
image.GET("/recommend", apis.GetImageRecommended)
//datasets
datasetsApi := apis.DatasetApi
datasets := v1.Group("datasets")
datasets.POST("/create", datasetsApi.CreateDataset)
datasets.GET("/public", apis.GetDatasetPublic)
datasets.POST("/export", apis.ExportDataset) //将用户选择的文件从训练任务结果中导出到数据集中
datasets.POST("/uploadFile", datasetsApi.UploadFileDatasets) //上传文件到数据集中
datasets.GET("/listDatasets", datasetsApi.ListDatasets) //查询数据集列表
//tasks
task := v1.Group("task")
task.GET("/creationRequired", apis.GetTaskCreationRequired)
task.GET("/creationImageBySpec", apis.GetTaskCreationImageBySpec) //根据选择的规格获取镜像计算资源是NPU时使用
task.GET("/list", apis.GetTaskList)
task.GET("/getOutput", apis.GetTaskOutput)
task.GET("/detail", apis.GetTaskDetail)
task.GET("/log", apis.GetLog)
task.POST("/create", apis.CreateTask)
task.POST("/stop", apis.StopTask)
task.GET("/downloadAll", apis.DownloadAllById)
//model
modelApi := apis.ModelApi
model := v1.Group("model")
model.POST("/create", apis.CreateModel)
model.GET("/getById", apis.GetModelById)
model.GET("/download", apis.DownloadById)
model.POST("/uploadFile", modelApi.UploadFile2Model)
// model local create
model.POST("/localCreate", apis.CreateLocalModel)
model.GET("/getUploadedChunks", apis.GetUploadedChunks)
model.GET("/newMultipart", apis.NewMultipart)
model.GET("/getMultipartUrl", apis.GetMultipartUrl)
model.POST("/completeMultipart", apis.CompleteMultipart)
}
return g, nil
}
var tokenRegexp = regexp.MustCompile("token=[^&]+")
func logFormatter(param gin.LogFormatterParams) string {
if (param.ClientIP == "127.0.0.1" || param.ClientIP == "::1") && param.Path == "/health" {
return ""
}
var statusColor, methodColor, resetColor string
if param.IsOutputColor() {
statusColor = param.StatusCodeColor()
methodColor = param.MethodColor()
resetColor = param.ResetColor()
}
if param.Latency > time.Minute {
param.Latency = param.Latency - param.Latency%time.Second
}
path := tokenRegexp.ReplaceAllString(param.Path, "token=[masked]")
return fmt.Sprintf("%v |%s %3d %s| %13v | %15s |%s %-7s %s %#v\n%s",
param.TimeStamp.Format(time.RFC3339),
statusColor, param.StatusCode, resetColor,
param.Latency,
param.ClientIP,
methodColor, param.Method, resetColor,
path,
param.ErrorMessage,
)
}