session.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package httpsession
  2. import (
  3. "net/http"
  4. "time"
  5. )
  6. type Session struct {
  7. id Id
  8. maxAge time.Duration
  9. manager *Manager
  10. }
  11. func (session *Session) Id() Id {
  12. return session.id
  13. }
  14. func (session *Session) SetId(id Id) {
  15. session.id = id
  16. }
  17. func (session *Session) Get(key string) interface{} {
  18. return session.manager.store.Get(session.id, key)
  19. }
  20. func (session *Session) GetMultiple() map[string]interface{} {
  21. return session.manager.store.GetMultiple(session.id)
  22. }
  23. func (session *Session) Set(key string, value interface{}) {
  24. session.manager.store.Set(session.id, key, value)
  25. }
  26. func (session *Session) SetMultiple(m map[string]interface{}) error {
  27. return session.manager.store.SetMultiple(session.id, m)
  28. }
  29. func (session *Session) Del(keys ...string) bool {
  30. return session.manager.store.Del(session.id, keys...)
  31. }
  32. func (session *Session) Clear() bool {
  33. return session.manager.store.Clear(session.id)
  34. }
  35. func (session *Session) Invalidate(rw http.ResponseWriter) {
  36. session.manager.Invalidate(rw, session)
  37. }
  38. func (session *Session) IsValid() bool {
  39. return session.manager.generator.IsValid(session.id)
  40. }
  41. func (session *Session) SetMaxAge(maxAge time.Duration) {
  42. session.maxAge = maxAge
  43. }
  44. func (session *Session) UpdateByCustomField(findkey string, findvalue interface{}, setkey string, setvalue interface{}) bool {
  45. return session.manager.store.UpdateByCustomField(findkey, findvalue, setkey, setvalue)
  46. }
  47. func NewSession(id Id, maxAge time.Duration, manager *Manager) *Session {
  48. return &Session{id: id, maxAge: manager.maxAge, manager: manager}
  49. }