github.com/billybanfield/evergreen@v0.0.0-20170525200750-eeee692790f7/service/flash.go (about)

     1  package service
     2  
     3  import (
     4  	"encoding/gob"
     5  	"net/http"
     6  
     7  	"github.com/gorilla/sessions"
     8  	"github.com/mongodb/grip"
     9  )
    10  
    11  const (
    12  	FlashSeveritySuccess = "success"
    13  	FlashSeverityInfo    = "info"
    14  	FlashSeverityWarning = "warning"
    15  	FlashSeverityError   = "danger"
    16  )
    17  
    18  const FlashSession = "mci-session"
    19  
    20  type flashMessage struct {
    21  	Severity string
    22  	Message  string
    23  }
    24  
    25  func init() {
    26  	gob.Register(&flashMessage{})
    27  }
    28  
    29  func NewSuccessFlash(message string) flashMessage {
    30  	return flashMessage{Severity: FlashSeveritySuccess, Message: message}
    31  }
    32  
    33  func NewInfoFlash(message string) flashMessage {
    34  	return flashMessage{Severity: FlashSeverityInfo, Message: message}
    35  }
    36  
    37  func NewWarningFlash(message string) flashMessage {
    38  	return flashMessage{Severity: FlashSeverityWarning, Message: message}
    39  }
    40  
    41  func NewErrorFlash(message string) flashMessage {
    42  	return flashMessage{Severity: FlashSeverityError, Message: message}
    43  }
    44  
    45  func PopFlashes(store *sessions.CookieStore, r *http.Request, w http.ResponseWriter) []interface{} {
    46  	session, _ := store.Get(r, FlashSession)
    47  	flashes := session.Flashes()
    48  	grip.Warning(session.Save(r, w))
    49  	return flashes
    50  }
    51  
    52  func PushFlash(store *sessions.CookieStore, r *http.Request, w http.ResponseWriter, msg flashMessage) {
    53  	session, _ := store.Get(r, FlashSession)
    54  	session.AddFlash(msg)
    55  	grip.Warning(session.Save(r, w))
    56  }