[新增] OpenFlare Pages

This commit is contained in:
ryan
2026-06-03 17:09:02 +08:00
parent 3ec607106d
commit 2c74d042ed
38 changed files with 2630 additions and 72 deletions
+162
View File
@@ -0,0 +1,162 @@
package controller
import (
"openflare/service"
"github.com/gin-gonic/gin"
)
func ListPagesProjects(c *gin.Context) {
projects, err := service.ListPagesProjects()
if err != nil {
respondFailure(c, err.Error())
return
}
respondSuccess(c, projects)
}
func GetPagesProject(c *gin.Context) {
id, ok := parseIDParam(c)
if !ok {
return
}
project, err := service.GetPagesProject(id)
if err != nil {
respondFailure(c, err.Error())
return
}
respondSuccess(c, project)
}
func CreatePagesProject(c *gin.Context) {
var input service.PagesProjectInput
if !bindJSON(c, &input) {
return
}
project, err := service.CreatePagesProject(input)
if err != nil {
respondFailure(c, err.Error())
return
}
respondSuccess(c, project)
}
func UpdatePagesProject(c *gin.Context) {
id, ok := parseIDParam(c)
if !ok {
return
}
var input service.PagesProjectInput
if !bindJSON(c, &input) {
return
}
project, err := service.UpdatePagesProject(id, input)
if err != nil {
respondFailure(c, err.Error())
return
}
respondSuccess(c, project)
}
func DeletePagesProject(c *gin.Context) {
id, ok := parseIDParam(c)
if !ok {
return
}
if err := service.DeletePagesProject(id); err != nil {
respondFailure(c, err.Error())
return
}
respondSuccess(c, nil)
}
func ListPagesDeployments(c *gin.Context) {
id, ok := parseIDParam(c)
if !ok {
return
}
deployments, err := service.ListPagesProjectDeployments(id)
if err != nil {
respondFailure(c, err.Error())
return
}
respondSuccess(c, deployments)
}
func UploadPagesDeployment(c *gin.Context) {
id, ok := parseIDParam(c)
if !ok {
return
}
file, err := c.FormFile("package")
if err != nil {
respondBadRequest(c, "缺少 Pages 部署包")
return
}
deployment, err := service.UploadPagesDeployment(id, file, c.PostForm("entry_file"), c.GetString("username"))
if err != nil {
respondFailure(c, err.Error())
return
}
respondSuccess(c, deployment)
}
func ActivatePagesDeployment(c *gin.Context) {
projectID, ok := parseIDParam(c)
if !ok {
return
}
deploymentID, ok := parseIDParamByName(c, "deployment_id")
if !ok {
return
}
project, err := service.ActivatePagesDeployment(projectID, deploymentID)
if err != nil {
respondFailure(c, err.Error())
return
}
respondSuccess(c, project)
}
func DeletePagesDeployment(c *gin.Context) {
projectID, ok := parseIDParam(c)
if !ok {
return
}
deploymentID, ok := parseIDParamByName(c, "deployment_id")
if !ok {
return
}
if err := service.DeletePagesDeployment(projectID, deploymentID); err != nil {
respondFailure(c, err.Error())
return
}
respondSuccess(c, nil)
}
func ListPagesDeploymentFiles(c *gin.Context) {
deploymentID, ok := parseIDParamByName(c, "deployment_id")
if !ok {
return
}
files, err := service.ListPagesDeploymentFiles(deploymentID)
if err != nil {
respondFailure(c, err.Error())
return
}
respondSuccess(c, files)
}
func AgentDownloadPagesDeploymentPackage(c *gin.Context) {
deploymentID, ok := parseIDParamByName(c, "deployment_id")
if !ok {
return
}
filePath, fileName, err := service.GetPagesDeploymentPackagePath(deploymentID)
if err != nil {
respondFailure(c, err.Error())
return
}
c.Header("Content-Disposition", "attachment; filename="+fileName)
c.File(filePath)
}
+5 -1
View File
@@ -75,7 +75,11 @@ func decodeOptionalJSONBody(body io.Reader, target any) error {
}
func parseIDParam(c *gin.Context) (uint, bool) {
id, err := strconv.ParseUint(c.Param("id"), 10, 64)
return parseIDParamByName(c, "id")
}
func parseIDParamByName(c *gin.Context, name string) (uint, bool) {
id, err := strconv.ParseUint(c.Param(name), 10, 64)
if err != nil || id == 0 {
respondBadRequest(c, "")
return 0, false