agendas/handler.go

94 lines
2 KiB
Go
Raw Normal View History

2024-12-23 20:57:58 -05:00
package main
import (
"context"
"fmt"
"log"
"net/http"
"git.agecem.com/bottin/bottin/v10/pkg/bottin"
"github.com/labstack/echo/v4"
)
// Handling
func UIIndex(ctx context.Context, bottinClient *bottin.APIClient) echo.HandlerFunc {
return func(c echo.Context) error {
type data struct {
Error string
BottinHealthResponse bottin.ReadHealthResponse
}
return c.Render(http.StatusOK, "index", func() (d data) {
if err := func() error {
select {
case <-ctx.Done():
return fmt.Errorf("Impossible de contacter le serveur: %s", ctx.Err())
default:
// Check client
if bottinClient == nil {
return fmt.Errorf("Impossible de contacter le serveur, le client API est nil")
}
// Check bottin health
bottinHealthResponse, err := bottinClient.ReadHealth(ctx)
if err != nil {
return err
}
d.BottinHealthResponse = bottinHealthResponse
// No errors
return nil
}
}(); err != nil {
// Send error to user
d.Error = err.Error()
// Log error
log.Println("err:", d.Error)
}
return
}())
}
}
func UIReadMembre(ctx context.Context, bottinClient *bottin.APIClient) echo.HandlerFunc {
return func(c echo.Context) error {
type data struct {
Error string
BottinMembreResponse bottin.ReadMembreResponse
}
return c.Render(http.StatusOK, "index", func() (d data) {
if err := func() error {
select {
case <-ctx.Done():
return fmt.Errorf("Impossible de contacter le serveur: %s", ctx.Err())
default:
// Check client
if bottinClient == nil {
return fmt.Errorf("Impossible de contacter le serveur, le client API est nil")
}
var err error
// Check membre
d.BottinMembreResponse, err = bottinClient.ReadMembre(ctx, c.QueryParam("m"))
if err != nil {
return err
}
// No errors
return nil
}
}(); err != nil {
// Send error to user
d.Error = err.Error()
// Log error
log.Println("err:", d.Error)
}
return
}())
}
}