Mise en marche de base de /v1/health avec pkg data
Ajouter data/ Ajouter data/ à Dockerfile Ajouter flags pour server.port et server.documents.* Ajouter viper Ajouter example de config à examples/config/ Exécuter serveur sur port custom (8080 par défaut) Retirer copyright notice de main.go Cleanup dependencies (go get, go mod tidy) Ajouter /v1/health Ajouter container minio à docker-compose
This commit is contained in:
parent
4cec29abee
commit
28cc97dcee
8 changed files with 206 additions and 19 deletions
|
@ -13,7 +13,9 @@ import (
|
|||
"sort"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/spf13/viper"
|
||||
|
||||
"git.agecem.com/agecem/agecem-org/data"
|
||||
"git.agecem.com/agecem/agecem-org/public"
|
||||
"github.com/labstack/echo/v4"
|
||||
"github.com/labstack/echo/v4/middleware"
|
||||
|
@ -37,6 +39,34 @@ var serverCmd = &cobra.Command{
|
|||
func init() {
|
||||
rootCmd.AddCommand(serverCmd)
|
||||
embedFS = public.GetEmbedFS()
|
||||
|
||||
// server.port - --server-port
|
||||
serverCmd.Flags().Int("server-port", 8080, "Port to run the webserver on (config: server.port)")
|
||||
viper.BindPFlag("server.port", serverCmd.Flags().Lookup("server-port"))
|
||||
|
||||
// server.documents.location - --server-documents-location
|
||||
serverCmd.Flags().String("server-documents-location", "us-east", "Storage bucket location (config: server.documents.location)")
|
||||
viper.BindPFlag("server.documents.location", serverCmd.Flags().Lookup("server-documents-location"))
|
||||
|
||||
// server.documents.endpoint - --server-documents-endpoint
|
||||
serverCmd.Flags().String("server-documents-endpoint", "minio:9000", "Storage server endpoint (config: server.documents.endpoint)")
|
||||
viper.BindPFlag("server.documents.endpoint", serverCmd.Flags().Lookup("server-documents-endpoint"))
|
||||
|
||||
// server.documents.access_key_id - --server-documents-access-key-id
|
||||
serverCmd.Flags().String("server-documents-access-key-id", "", "Storage server access key id (config: server.documents.access_key_id)")
|
||||
viper.BindPFlag("documents.accessKeyID", serverCmd.Flags().Lookup("documents-access-key-id"))
|
||||
|
||||
// server.documents.secret_access_key - --server-documents-secret-access-key
|
||||
serverCmd.Flags().String("server-documents-secret-access-key", "", "Storage server secret access key (config: server.documents.secret_access_key)")
|
||||
viper.BindPFlag("server.documents.secret_access_key", serverCmd.Flags().Lookup("server-documents-secret-access-key"))
|
||||
|
||||
// server.documents.use_ssl - --server-documents-use-ssl
|
||||
serverCmd.Flags().Bool("server-documents-use-ssl", true, "Storage server SSL status (config: server.documents.use_ssl)")
|
||||
viper.BindPFlag("server.documents.use_ssl", serverCmd.Flags().Lookup("server-documents-use-ssl"))
|
||||
|
||||
// server.documents.buckets - --server-documents-buckets
|
||||
serverCmd.Flags().StringSlice("server-documents-buckets", nil, "Buckets that are allowed to be accessed by the API (config: server.documents.buckets)")
|
||||
viper.BindPFlag("server.documents.buckets", serverCmd.Flags().Lookup("server-documents-buckets"))
|
||||
}
|
||||
|
||||
func RunServer() {
|
||||
|
@ -54,6 +84,8 @@ func RunServer() {
|
|||
|
||||
e.GET("/v1", handleV1)
|
||||
|
||||
e.GET("/v1/health", handleV1Health)
|
||||
|
||||
// Static Routes
|
||||
|
||||
e.GET("/static/general.css", handleStaticCSSGeneral)
|
||||
|
@ -78,7 +110,8 @@ func RunServer() {
|
|||
|
||||
e.GET("/formulaires", handleFormulaires)
|
||||
|
||||
e.Logger.Fatal(e.Start(":8080"))
|
||||
e.Logger.Fatal(e.Start(
|
||||
fmt.Sprintf(":%d", viper.GetInt("server.port"))))
|
||||
}
|
||||
|
||||
func (t *Template) Render(w io.Writer, name string, data interface{}, c echo.Context) error {
|
||||
|
@ -95,6 +128,38 @@ func handleV1(c echo.Context) error {
|
|||
return c.JSON(http.StatusOK, routes)
|
||||
}
|
||||
|
||||
// handleV1Health affiche l'état de connexion à la base de données
|
||||
func handleV1Health(c echo.Context) error {
|
||||
documents_buckets := viper.GetStringSlice("server.documents.buckets")
|
||||
|
||||
documents_endpoint := viper.GetString("server.documents.endpoint")
|
||||
documents_access_key_id := viper.GetString("server.documents.access_key_id")
|
||||
documents_secret_access_key := viper.GetString("server.documents.secret_access_key")
|
||||
documents_use_ssl := viper.GetBool("server.documents.use_ssl")
|
||||
|
||||
client, err := data.NewClient(documents_buckets, documents_endpoint, documents_access_key_id, documents_secret_access_key, documents_use_ssl)
|
||||
if err != nil {
|
||||
return c.JSON(http.StatusInternalServerError, err)
|
||||
}
|
||||
|
||||
if len(documents_buckets) == 0 {
|
||||
return c.JSON(http.StatusOK, nil)
|
||||
}
|
||||
|
||||
message := make(map[string]interface{}, len(documents_buckets))
|
||||
|
||||
for _, bucket := range documents_buckets {
|
||||
|
||||
exists, err := client.BucketExists(bucket)
|
||||
if err != nil {
|
||||
return c.JSON(http.StatusInternalServerError, err)
|
||||
}
|
||||
message[bucket] = exists
|
||||
}
|
||||
|
||||
return c.JSON(http.StatusOK, message)
|
||||
}
|
||||
|
||||
// HTML Handlers
|
||||
|
||||
func handleIndex(c echo.Context) error {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue