Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package flash
- import (
- "encoding/gob"
- "fmt"
- "net/http"
- "os"
- "github.com/gorilla/sessions"
- )
- const (
- // TicketBox holds the ticket cookie name.
- TicketBox = "ticket"
- )
- var (
- // Store holds all session data.
- Store = sessions.NewCookieStore([]byte(os.Getenv("SESSION_KEY")))
- )
- type Message struct {
- Type string
- Content string
- }
- type M map[string]interface{}
- func init() {
- gob.Register(&Message{})
- gob.Register(&M{})
- }
- // Add creates a new flash message.
- func Add(w http.ResponseWriter, r *http.Request, box string, content Message) error {
- // Get a session.
- session, err := Store.Get(r, box)
- if err != nil {
- return err
- }
- // Set a new flash.
- session.AddFlash(content)
- session.Save(r, w)
- return err
- }
- // Get retrieves saved flash messages.
- func Get(w http.ResponseWriter, r *http.Request, box string) ([]interface{}, error) {
- // Get a session.
- session, err := Store.Get(r, box)
- // Get the previous flashes, if any.
- if flashes := session.Flashes(); len(flashes) > 0 {
- // Use the flash values.
- session.Save(r, w)
- return flashes, err
- }
- return []interface{}{}, err
- }
- // Add flash message
- if err := flash.Add(w, r, flash.TicketBox, flash.Message{Type: "111", Content: "222"}); err != nil {
- http.Error(w, "Could not save flash message", http.StatusInternalServerError)
- return
- }
- if session, err := flash.Get(w, r, flash.TicketBox); err != nil {
- http.Error(w, err.Error(), http.StatusInternalServerError)
- return
- } else {
- td["Flashes"] = session
- }
- fmt.Println(td["Flashes"])
- if message, ok := td["Flashes"].(*[]flash.Message); !ok {
- // Handle the case that it's not an expected type
- fmt.Println(ok)
- } else {
- // message
- fmt.Println(message)
- }
- [0xc0000d9740]
- false
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement