mirror of
https://github.com/yusing/godoxy.git
synced 2025-05-20 12:42:34 +02:00
refactor: rename api/v1/file.go to config_file.go, updated error handling
This commit is contained in:
parent
cba7338d8d
commit
b0876331e6
1 changed files with 18 additions and 19 deletions
|
@ -7,11 +7,11 @@ import (
|
||||||
"path"
|
"path"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
U "github.com/yusing/go-proxy/internal/api/v1/utils"
|
|
||||||
"github.com/yusing/go-proxy/internal/common"
|
"github.com/yusing/go-proxy/internal/common"
|
||||||
config "github.com/yusing/go-proxy/internal/config/types"
|
config "github.com/yusing/go-proxy/internal/config/types"
|
||||||
E "github.com/yusing/go-proxy/internal/error"
|
"github.com/yusing/go-proxy/internal/gperr"
|
||||||
"github.com/yusing/go-proxy/internal/net/http/middleware"
|
"github.com/yusing/go-proxy/internal/net/gphttp"
|
||||||
|
"github.com/yusing/go-proxy/internal/net/gphttp/middleware"
|
||||||
"github.com/yusing/go-proxy/internal/route/provider"
|
"github.com/yusing/go-proxy/internal/route/provider"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -51,12 +51,12 @@ func (t FileType) GetPath(filename string) string {
|
||||||
func getArgs(r *http.Request) (fileType FileType, filename string, err error) {
|
func getArgs(r *http.Request) (fileType FileType, filename string, err error) {
|
||||||
fileType = FileType(r.PathValue("type"))
|
fileType = FileType(r.PathValue("type"))
|
||||||
if !fileType.IsValid() {
|
if !fileType.IsValid() {
|
||||||
err = U.ErrInvalidKey("type")
|
err = gphttp.ErrInvalidKey("type")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
filename = r.PathValue("filename")
|
filename = r.PathValue("filename")
|
||||||
if filename == "" {
|
if filename == "" {
|
||||||
err = U.ErrMissingKey("filename")
|
err = gphttp.ErrMissingKey("filename")
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -64,23 +64,23 @@ func getArgs(r *http.Request) (fileType FileType, filename string, err error) {
|
||||||
func GetFileContent(w http.ResponseWriter, r *http.Request) {
|
func GetFileContent(w http.ResponseWriter, r *http.Request) {
|
||||||
fileType, filename, err := getArgs(r)
|
fileType, filename, err := getArgs(r)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
U.RespondError(w, err, http.StatusBadRequest)
|
gphttp.BadRequest(w, err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
content, err := os.ReadFile(fileType.GetPath(filename))
|
content, err := os.ReadFile(fileType.GetPath(filename))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
U.HandleErr(w, r, err)
|
gphttp.ServerError(w, r, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
U.WriteBody(w, content)
|
gphttp.WriteBody(w, content)
|
||||||
}
|
}
|
||||||
|
|
||||||
func validateFile(fileType FileType, content []byte) error {
|
func validateFile(fileType FileType, content []byte) gperr.Error {
|
||||||
switch fileType {
|
switch fileType {
|
||||||
case FileTypeConfig:
|
case FileTypeConfig:
|
||||||
return config.Validate(content)
|
return config.Validate(content)
|
||||||
case FileTypeMiddleware:
|
case FileTypeMiddleware:
|
||||||
errs := E.NewBuilder("middleware errors")
|
errs := gperr.NewBuilder("middleware errors")
|
||||||
middleware.BuildMiddlewaresFromYAML("", content, errs)
|
middleware.BuildMiddlewaresFromYAML("", content, errs)
|
||||||
return errs.Error()
|
return errs.Error()
|
||||||
}
|
}
|
||||||
|
@ -90,18 +90,17 @@ func validateFile(fileType FileType, content []byte) error {
|
||||||
func ValidateFile(w http.ResponseWriter, r *http.Request) {
|
func ValidateFile(w http.ResponseWriter, r *http.Request) {
|
||||||
fileType := FileType(r.PathValue("type"))
|
fileType := FileType(r.PathValue("type"))
|
||||||
if !fileType.IsValid() {
|
if !fileType.IsValid() {
|
||||||
U.RespondError(w, U.ErrInvalidKey("type"), http.StatusBadRequest)
|
gphttp.BadRequest(w, "invalid file type")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
content, err := io.ReadAll(r.Body)
|
content, err := io.ReadAll(r.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
U.HandleErr(w, r, err)
|
gphttp.ServerError(w, r, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
r.Body.Close()
|
r.Body.Close()
|
||||||
err = validateFile(fileType, content)
|
if valErr := validateFile(fileType, content); valErr != nil {
|
||||||
if err != nil {
|
gphttp.JSONError(w, valErr, http.StatusBadRequest)
|
||||||
U.RespondError(w, err, http.StatusBadRequest)
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
w.WriteHeader(http.StatusOK)
|
w.WriteHeader(http.StatusOK)
|
||||||
|
@ -110,23 +109,23 @@ func ValidateFile(w http.ResponseWriter, r *http.Request) {
|
||||||
func SetFileContent(w http.ResponseWriter, r *http.Request) {
|
func SetFileContent(w http.ResponseWriter, r *http.Request) {
|
||||||
fileType, filename, err := getArgs(r)
|
fileType, filename, err := getArgs(r)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
U.RespondError(w, err, http.StatusBadRequest)
|
gphttp.BadRequest(w, err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
content, err := io.ReadAll(r.Body)
|
content, err := io.ReadAll(r.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
U.HandleErr(w, r, err)
|
gphttp.ServerError(w, r, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if valErr := validateFile(fileType, content); valErr != nil {
|
if valErr := validateFile(fileType, content); valErr != nil {
|
||||||
U.RespondError(w, valErr, http.StatusBadRequest)
|
gphttp.JSONError(w, valErr, http.StatusBadRequest)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
err = os.WriteFile(fileType.GetPath(filename), content, 0o644)
|
err = os.WriteFile(fileType.GetPath(filename), content, 0o644)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
U.HandleErr(w, r, err)
|
gphttp.ServerError(w, r, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
w.WriteHeader(http.StatusOK)
|
w.WriteHeader(http.StatusOK)
|
Loading…
Add table
Reference in a new issue