12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- package web
- import (
- "fmt"
- "log"
- "net/http"
- "time"
- "github.com/gin-contrib/sessions"
- "github.com/gin-gonic/gin"
- "code.osinet.fr/fgm/sqs_demo/back/services/redriver"
- )
- func makePurgeHandler(rd redriver.Redriver) gin.HandlerFunc {
- return func(c *gin.Context) {
- ctx := c.Request.Context()
- qName := c.Param("name")
- redirect := "/queue/" + qName
- sess := sessions.Default(c)
- // Do not consume sess.Flashes(): this is a redirect-only handler, and they would be lost.
- defer func() {
- _ = sess.Save()
- c.Redirect(http.StatusSeeOther, redirect)
- }()
- t0 := time.Now()
- err := rd.Purge(ctx, qName)
- latency := time.Since(t0)
- if err != nil {
- log.Printf("failed purging queue %q: %v", qName, err)
- sess.AddFlash(fmt.Sprintf("Failed purging queue %q", qName))
- return
- }
- sess.AddFlash(fmt.Sprintf("Purged submitted for queue %s in %v", qName,
- latency))
- sess.AddFlash("The actual purge process takes up to 60 seconds, " +
- "so not be surprised if some messages are still visible on the queue messsages list." +
- "We recommend waiting for 60 seconds to refresh, regardless of your queue's size.")
- }
- }
|