Advertisement
Guest User

Untitled

a guest
Aug 17th, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.83 KB | None | 0 0
  1. package flash
  2.  
  3. import (
  4. "encoding/gob"
  5. "fmt"
  6. "net/http"
  7. "os"
  8.  
  9. "github.com/gorilla/sessions"
  10. )
  11.  
  12. const (
  13. // TicketBox holds the ticket cookie name.
  14. TicketBox = "ticket"
  15. )
  16.  
  17. var (
  18. // Store holds all session data.
  19. Store = sessions.NewCookieStore([]byte(os.Getenv("SESSION_KEY")))
  20. )
  21.  
  22. type Message struct {
  23. Type string
  24. Content string
  25. }
  26.  
  27. type M map[string]interface{}
  28.  
  29. func init() {
  30.  
  31. gob.Register(&Message{})
  32. gob.Register(&M{})
  33. }
  34.  
  35. // Add creates a new flash message.
  36. func Add(w http.ResponseWriter, r *http.Request, box string, content Message) error {
  37. // Get a session.
  38. session, err := Store.Get(r, box)
  39. if err != nil {
  40. return err
  41. }
  42. // Set a new flash.
  43. session.AddFlash(content)
  44. session.Save(r, w)
  45.  
  46. return err
  47. }
  48.  
  49. // Get retrieves saved flash messages.
  50. func Get(w http.ResponseWriter, r *http.Request, box string) ([]interface{}, error) {
  51. // Get a session.
  52. session, err := Store.Get(r, box)
  53.  
  54. // Get the previous flashes, if any.
  55. if flashes := session.Flashes(); len(flashes) > 0 {
  56. // Use the flash values.
  57. session.Save(r, w)
  58. return flashes, err
  59. }
  60.  
  61. return []interface{}{}, err
  62. }
  63.  
  64. // Add flash message
  65. if err := flash.Add(w, r, flash.TicketBox, flash.Message{Type: "111", Content: "222"}); err != nil {
  66. http.Error(w, "Could not save flash message", http.StatusInternalServerError)
  67. return
  68. }
  69.  
  70. if session, err := flash.Get(w, r, flash.TicketBox); err != nil {
  71. http.Error(w, err.Error(), http.StatusInternalServerError)
  72. return
  73. } else {
  74. td["Flashes"] = session
  75. }
  76.  
  77. fmt.Println(td["Flashes"])
  78.  
  79. if message, ok := td["Flashes"].(*[]flash.Message); !ok {
  80. // Handle the case that it's not an expected type
  81. fmt.Println(ok)
  82. } else {
  83. // message
  84. fmt.Println(message)
  85. }
  86.  
  87. [0xc0000d9740]
  88. false
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement