file operate
This commit is contained in:
parent
757a4b93c5
commit
b391bca67f
|
|
@ -1,5 +1,5 @@
|
||||||
build:
|
build:
|
||||||
image: docker:latest
|
image: docker:23.0.1-dind
|
||||||
stage: build
|
stage: build
|
||||||
tags:
|
tags:
|
||||||
- dind-runner
|
- dind-runner
|
||||||
|
|
@ -12,7 +12,7 @@ build:
|
||||||
|
|
||||||
deploy:
|
deploy:
|
||||||
image:
|
image:
|
||||||
name: bitnami/kubectl:latest
|
name: bitnami/kubectl:1.26.2
|
||||||
entrypoint: [""]
|
entrypoint: [""]
|
||||||
stage: deploy
|
stage: deploy
|
||||||
only:
|
only:
|
||||||
|
|
|
||||||
6
main.go
6
main.go
|
|
@ -45,6 +45,12 @@ func main() {
|
||||||
r.GET("/login", LoginToken)
|
r.GET("/login", LoginToken)
|
||||||
r.Any("/test_token", TestToken)
|
r.Any("/test_token", TestToken)
|
||||||
r.GET("/username", m.JWTAuthMiddleware, m.GetUsername)
|
r.GET("/username", m.JWTAuthMiddleware, m.GetUsername)
|
||||||
|
|
||||||
|
r.GET("/files/:app", m.JWTAuthMiddleware, m.GetFiles)
|
||||||
|
r.GET("/file/:app/:filename", m.JWTAuthMiddleware, m.GetPostOrDeleteFile)
|
||||||
|
r.POST("/file/:app/:filename", m.JWTAuthMiddleware, m.GetPostOrDeleteFile)
|
||||||
|
r.DELETE("/file/:app/:filename", m.JWTAuthMiddleware, m.GetPostOrDeleteFile)
|
||||||
|
|
||||||
err := r.Run(":8000")
|
err := r.Run(":8000")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,56 @@
|
||||||
|
package k8s_manager
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
log "github.com/sirupsen/logrus"
|
||||||
|
"github.com/thoas/go-funk"
|
||||||
|
"io/fs"
|
||||||
|
"net/http"
|
||||||
|
"os"
|
||||||
|
"path"
|
||||||
|
)
|
||||||
|
|
||||||
|
func GetFiles(c *gin.Context) {
|
||||||
|
username := c.MustGet("username").(string)
|
||||||
|
appName := c.Param("app")
|
||||||
|
dirPath := path.Join(config.NFSPath, username, appName)
|
||||||
|
dir, err := os.ReadDir(dirPath)
|
||||||
|
if err != nil {
|
||||||
|
log.WithError(err).Error("Cannot ReadDir ", dirPath)
|
||||||
|
c.JSON(http.StatusBadRequest, gin.H{"ok": false, "msg": err})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
c.JSON(http.StatusOK, gin.H{"ok": true, "files": funk.Map(dir, func(d fs.DirEntry) string { return d.Name() }).([]string)})
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetPostOrDeleteFile(c *gin.Context) {
|
||||||
|
username := c.MustGet("username").(string)
|
||||||
|
appName := c.Param("app")
|
||||||
|
fileName := c.Param("filename")
|
||||||
|
filePath := path.Join(config.NFSPath, username, appName, fileName)
|
||||||
|
if c.Request.Method == http.MethodGet {
|
||||||
|
c.FileAttachment(filePath, fileName)
|
||||||
|
} else if c.Request.Method == http.MethodPost {
|
||||||
|
file, err := c.FormFile("file")
|
||||||
|
if err == nil {
|
||||||
|
log.WithError(err).Error("GetPostOrDeleteFile: Cannot get file")
|
||||||
|
c.JSON(http.StatusBadRequest, gin.H{"ok": false, "msg": err})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = c.SaveUploadedFile(file, filePath)
|
||||||
|
if err != nil {
|
||||||
|
log.WithError(err).Error("GetPostOrDeleteFile: Save file error")
|
||||||
|
c.JSON(http.StatusInternalServerError, gin.H{"ok": false, "msg": err})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
c.JSON(http.StatusOK, gin.H{"ok": true})
|
||||||
|
} else if c.Request.Method == http.MethodDelete {
|
||||||
|
err := os.Remove(filePath)
|
||||||
|
if err != nil {
|
||||||
|
log.WithError(err).Error("GetPostOrDeleteFile: Remove file error")
|
||||||
|
c.JSON(http.StatusInternalServerError, gin.H{"ok": false, "msg": err})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
c.JSON(http.StatusOK, gin.H{"ok": true})
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue