|
@@ -8,6 +8,8 @@ import (
|
|
"path/filepath"
|
|
"path/filepath"
|
|
|
|
|
|
"github.com/fgm/izidic"
|
|
"github.com/fgm/izidic"
|
|
|
|
+ "github.com/gin-contrib/sessions"
|
|
|
|
+ "github.com/gin-contrib/sessions/cookie"
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/gin-gonic/gin"
|
|
|
|
|
|
"code.osinet.fr/fgm/sqs_demo/back/services"
|
|
"code.osinet.fr/fgm/sqs_demo/back/services"
|
|
@@ -15,28 +17,48 @@ import (
|
|
"code.osinet.fr/fgm/sqs_demo/front"
|
|
"code.osinet.fr/fgm/sqs_demo/front"
|
|
)
|
|
)
|
|
|
|
|
|
-func SetupRoutes(rd redriver.Redriver, renderer *template.Template) *gin.Engine {
|
|
|
|
|
|
+func SetupRoutes(rd redriver.Redriver, renderer *template.Template, secret []byte) *gin.Engine {
|
|
const assetsPrefix = "/assets/"
|
|
const assetsPrefix = "/assets/"
|
|
r := gin.Default()
|
|
r := gin.Default()
|
|
r.SetHTMLTemplate(renderer)
|
|
r.SetHTMLTemplate(renderer)
|
|
r.SetTrustedProxies(nil)
|
|
r.SetTrustedProxies(nil)
|
|
|
|
+ store := cookie.NewStore(secret)
|
|
|
|
+ r.Use(sessions.Sessions("defaultsession", store))
|
|
|
|
+
|
|
r.GET("/", makeHomeHandler(rd))
|
|
r.GET("/", makeHomeHandler(rd))
|
|
r.StaticFS(assetsPrefix, PrefixFileSystem(assetsPrefix, http.FS(front.Assets)))
|
|
r.StaticFS(assetsPrefix, PrefixFileSystem(assetsPrefix, http.FS(front.Assets)))
|
|
|
|
+ r.GET("/queue", gin.WrapH(http.RedirectHandler("/", http.StatusMovedPermanently)))
|
|
r.GET("/queue/:name", makeQueueHandler(rd))
|
|
r.GET("/queue/:name", makeQueueHandler(rd))
|
|
|
|
+ r.GET("/queue/:name/delete", makeDeleteHandler(rd))
|
|
|
|
+ r.POST("/queue/:name/delete", makeDeleteConfirmHandler(rd))
|
|
|
|
+ r.GET("/queue/:name/purge", makePurgeHandler(rd))
|
|
|
|
+ r.POST("/queue/:name/purge", makePurgeConfirmHandler(rd))
|
|
|
|
+ r.POST("/queue/:name/redrive", makeRedriveHandler(rd))
|
|
return r
|
|
return r
|
|
}
|
|
}
|
|
|
|
|
|
func HttpService(dic *izidic.Container) (any, error) {
|
|
func HttpService(dic *izidic.Container) (any, error) {
|
|
|
|
+ secret := dic.MustParam(services.PSecret).([]byte)
|
|
rd := dic.MustService(services.SvcRedriver).(redriver.Redriver)
|
|
rd := dic.MustService(services.SvcRedriver).(redriver.Redriver)
|
|
re := dic.MustService(services.SvcRenderer).(*template.Template)
|
|
re := dic.MustService(services.SvcRenderer).(*template.Template)
|
|
- return SetupRoutes(rd, re), nil
|
|
|
|
|
|
+ return SetupRoutes(rd, re, secret), nil
|
|
}
|
|
}
|
|
|
|
|
|
func RendererService(dic *izidic.Container) (any, error) {
|
|
func RendererService(dic *izidic.Container) (any, error) {
|
|
|
|
+ var err error
|
|
renderer := template.New("redriver")
|
|
renderer := template.New("redriver")
|
|
- renderer, err := renderer.New("queue-get").Parse(front.QueueGet)
|
|
|
|
- if err != nil {
|
|
|
|
- return nil, fmt.Errorf("failed parsing queue-get template")
|
|
|
|
|
|
+ for _, tpl := range []struct {
|
|
|
|
+ name string
|
|
|
|
+ value string
|
|
|
|
+ }{
|
|
|
|
+ {"confirm", front.Confirm},
|
|
|
|
+ {"flashes", front.Flashes},
|
|
|
|
+ {"queue-get", front.QueueGet},
|
|
|
|
+ } {
|
|
|
|
+ renderer, err = renderer.New(tpl.name).Parse(tpl.value)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, fmt.Errorf("failed parsing %q template: %w", tpl.name, err)
|
|
|
|
+ }
|
|
}
|
|
}
|
|
return renderer, nil
|
|
return renderer, nil
|
|
}
|
|
}
|