diff --git a/sessions_test.go b/sessions_test.go index c166b05..f00813e 100644 --- a/sessions_test.go +++ b/sessions_test.go @@ -48,7 +48,7 @@ func TestFlashes(t *testing.T) { req, _ = http.NewRequest("GET", "http://localhost:8080/", nil) rsp = NewRecorder() // Get a session. - if session, err = store.Get(req, "session-key"); err != nil { + if session, req, err = store.Get(req, "session-key"); err != nil { t.Fatalf("Error getting session: %v", err) } // Get a flash. @@ -71,7 +71,7 @@ func TestFlashes(t *testing.T) { t.Fatal("No cookies. Header:", hdr) } - if _, err = store.Get(req, "session:key"); err.Error() != "sessions: invalid character in cookie name: session:key" { + if _, req, err = store.Get(req, "session:key"); err.Error() != "sessions: invalid character in cookie name: session:key" { t.Fatalf("Expected error due to invalid cookie name") } @@ -81,7 +81,7 @@ func TestFlashes(t *testing.T) { req.Header.Add("Cookie", cookies[0]) rsp = NewRecorder() // Get a session. - if session, err = store.Get(req, "session-key"); err != nil { + if session, req, err = store.Get(req, "session-key"); err != nil { t.Fatalf("Error getting session: %v", err) } // Check all saved values. @@ -114,7 +114,7 @@ func TestFlashes(t *testing.T) { req, _ = http.NewRequest("GET", "http://localhost:8080/", nil) rsp = NewRecorder() // Get a session. - if session, err = store.Get(req, "session-key"); err != nil { + if session, req, err = store.Get(req, "session-key"); err != nil { t.Fatalf("Error getting session: %v", err) } // Get a flash. @@ -141,7 +141,7 @@ func TestFlashes(t *testing.T) { req.Header.Add("Cookie", cookies[0]) rsp = NewRecorder() // Get a session. - if session, err = store.Get(req, "session-key"); err != nil { + if session, req, err = store.Get(req, "session-key"); err != nil { t.Fatalf("Error getting session: %v", err) } // Check all saved values. diff --git a/store.go b/store.go index c57f047..f041a6b 100644 --- a/store.go +++ b/store.go @@ -21,7 +21,7 @@ import ( // See CookieStore and FilesystemStore for examples. type Store interface { // Get should return a cached session. - Get(r *http.Request, name string) (*Session, error) + Get(r *http.Request, name string) (*Session, *http.Request, error) // New should create and return a new session. // @@ -76,10 +76,12 @@ type CookieStore struct { // // It returns a new session and an error if the session exists but could // not be decoded. -func (s *CookieStore) Get(r *http.Request, name string) (*Session, error) { +func (s *CookieStore) Get(r *http.Request, name string) (*Session, *http.Request, error) { var reg *Registry reg, r = GetRegistry(r) - return reg.Get(s, name) + ses, err := reg.Get(s, name) + + return ses, r, err } // New returns a session for the given name without adding it to the registry. @@ -181,10 +183,12 @@ func (s *FilesystemStore) MaxLength(l int) { // Get returns a session for the given name after adding it to the registry. // // See CookieStore.Get(). -func (s *FilesystemStore) Get(r *http.Request, name string) (*Session, error) { +func (s *FilesystemStore) Get(r *http.Request, name string) (*Session, *http.Request, error) { var reg *Registry reg, r = GetRegistry(r) - return reg.Get(s, name) + ses, err := reg.Get(s, name) + + return ses, r, err } // New returns a session for the given name without adding it to the registry.