113 lines
3.5 KiB
Go
113 lines
3.5 KiB
Go
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,
|
||
)
|
||
}
|