wip: APIv2, UI rework, js cleanup
Retirer jquery etc.
This commit is contained in:
parent
37031749b4
commit
52dd5693fb
11 changed files with 126 additions and 218 deletions
|
@ -32,7 +32,7 @@ const (
|
|||
)
|
||||
|
||||
func ServerCmdExecuter() error {
|
||||
RunServer(app.Config.ServerContenuDir, app.Config.ServerPort)
|
||||
RunServer(app.Config)
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
@ -9,6 +9,8 @@ import (
|
|||
"github.com/labstack/echo/v4"
|
||||
)
|
||||
|
||||
// pre-v2
|
||||
|
||||
type ContenuHandler struct {
|
||||
ContenuDir string
|
||||
}
|
||||
|
@ -43,3 +45,24 @@ func (h ContenuHandler) HandleAPIContenuFile(c echo.Context) error {
|
|||
|
||||
return c.File(fmt.Sprintf("%s/%s", contenu_dir, filename))
|
||||
}
|
||||
|
||||
// v2
|
||||
|
||||
func APIv2ListContenu(cfg Config) echo.HandlerFunc {
|
||||
return func(c echo.Context) error {
|
||||
files, err := ListContenu(cfg.ServerContenuDir)
|
||||
if err != nil {
|
||||
return c.JSON(http.StatusInternalServerError, ErrorResponse{Error: err.Error()})
|
||||
}
|
||||
|
||||
return c.JSON(http.StatusOK, NewContenuResponse(files))
|
||||
}
|
||||
}
|
||||
|
||||
// ui
|
||||
|
||||
func UIContenuFichier(cfg Config) echo.HandlerFunc {
|
||||
return func(c echo.Context) error {
|
||||
return c.File(fmt.Sprintf("%s/%s", cfg.ServerContenuDir, c.Param("fichier")))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,24 +1,42 @@
|
|||
package babillard
|
||||
|
||||
import "os"
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
)
|
||||
|
||||
func ListContenu(path string) ([]string, error) {
|
||||
var files []string
|
||||
f, err_open := os.Open(path)
|
||||
defer f.Close()
|
||||
var forbiddenFiles = []string{".gitkeep", "messages.txt", "Thumbs.db"}
|
||||
|
||||
if err_open != nil {
|
||||
return nil, err_open
|
||||
func ListContenu(path string) (files []string, err error) {
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
fileInfo, err_read := f.Readdir(-1)
|
||||
if err_read != nil {
|
||||
return nil, err_read
|
||||
defer file.Close()
|
||||
|
||||
stats, err := file.Stat()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for _, file := range fileInfo {
|
||||
if file.Name() != ".gitkeep" && file.Name() != "messages.txt" {
|
||||
files = append(files, file.Name())
|
||||
if !stats.IsDir() {
|
||||
return nil, fmt.Errorf("contenu '%s' n'est pas un répertoire", path)
|
||||
}
|
||||
|
||||
fileInfos, err := file.Readdir(-1)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
fileLoop:
|
||||
for _, fileInfo := range fileInfos {
|
||||
for _, forbiddenFile := range forbiddenFiles {
|
||||
if fileInfo.Name() == forbiddenFile {
|
||||
continue fileLoop
|
||||
}
|
||||
}
|
||||
files = append(files, fileInfo.Name())
|
||||
}
|
||||
|
||||
return files, nil
|
||||
}
|
||||
|
|
|
@ -18,12 +18,16 @@ API Specifications
|
|||
'/api' | GET | Affiche les spécifications API
|
||||
'/api/contenu' | GET | Affiche le nom des fichiers dans 'contenu/'
|
||||
'/api/contenu/{filename}' | GET | Affiche le fichier 'contenu/{filename}'
|
||||
-----`
|
||||
-----
|
||||
|
||||
v2
|
||||
--
|
||||
'/api/v2/contenu' | GET | Affiche les noms des fichiers dans 'contenu/'
|
||||
`
|
||||
return c.String(http.StatusOK, apispec)
|
||||
}
|
||||
|
||||
func RunServer(contenuDir string, serverPort int) {
|
||||
func RunServer(cfg Config) {
|
||||
log.Print("[I] Starting webserver")
|
||||
|
||||
e := echo.New()
|
||||
|
@ -45,11 +49,17 @@ func RunServer(contenuDir string, serverPort int) {
|
|||
|
||||
groupAPI := e.Group("/api")
|
||||
|
||||
contenuHandler := NewContenuHandler(contenuDir)
|
||||
contenuHandler := NewContenuHandler(cfg.ServerContenuDir)
|
||||
|
||||
groupAPI.GET("/", HandleAPIShow)
|
||||
groupAPI.GET("/contenu/", contenuHandler.HandleAPIContenuList)
|
||||
groupAPI.GET("/contenu/:filename/", contenuHandler.HandleAPIContenuFile)
|
||||
|
||||
e.Logger.Fatal(e.Start(fmt.Sprintf(":%d", serverPort)))
|
||||
groupAPI.GET("/v2/contenu/", APIv2ListContenu(cfg))
|
||||
|
||||
groupUI := e.Group("/ui")
|
||||
|
||||
groupUI.GET("/contenu/:fichier/", UIContenuFichier(cfg))
|
||||
|
||||
e.Logger.Fatal(e.Start(fmt.Sprintf(":%d", cfg.ServerPort)))
|
||||
}
|
||||
|
|
20
pkg/babillard/response.go
Normal file
20
pkg/babillard/response.go
Normal file
|
@ -0,0 +1,20 @@
|
|||
package babillard
|
||||
|
||||
type ErrorResponse struct {
|
||||
Error string
|
||||
}
|
||||
|
||||
type MessageResponse struct {
|
||||
Message string
|
||||
}
|
||||
|
||||
type ContenuResponse struct {
|
||||
Data struct {
|
||||
Contenu []string
|
||||
}
|
||||
}
|
||||
|
||||
func NewContenuResponse(fichiers []string) (response ContenuResponse) {
|
||||
response.Data.Contenu = fichiers
|
||||
return
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue