mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-10-01 22:46:38 +08:00
[新增] OpenFlare Pages
This commit is contained in:
@@ -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)
|
||||
}
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user