Read() -> Load()
This commit is contained in:
parent
95984bb37c
commit
ffd730b057
3 changed files with 14 additions and 14 deletions
|
@ -44,7 +44,7 @@ type Provider interface {
|
||||||
//create new session using sid value
|
//create new session using sid value
|
||||||
Init(sid string) (Session, error)
|
Init(sid string) (Session, error)
|
||||||
//read and return existing session by id or if not exist create new session
|
//read and return existing session by id or if not exist create new session
|
||||||
Read(sid string) (Session, error)
|
Load(sid string) (Session, error)
|
||||||
//destroy remove session with sid from storage if exist
|
//destroy remove session with sid from storage if exist
|
||||||
Destroy(sid string) error
|
Destroy(sid string) error
|
||||||
//regenerate id change old sid to newsid and preserve existing session data
|
//regenerate id change old sid to newsid and preserve existing session data
|
||||||
|
@ -142,7 +142,7 @@ func (manager *Manager) SessionStart(w http.ResponseWriter, r *http.Request) (se
|
||||||
if sid, err = url.QueryUnescape(cookie.Value); err != nil {
|
if sid, err = url.QueryUnescape(cookie.Value); err != nil {
|
||||||
return nil, fmt.Errorf("Session cookie decode error: %v", err)
|
return nil, fmt.Errorf("Session cookie decode error: %v", err)
|
||||||
}
|
}
|
||||||
if session, err = manager.provider.Read(sid); err != nil {
|
if session, err = manager.provider.Load(sid); err != nil {
|
||||||
return nil, fmt.Errorf("Session provider read error: %w", err)
|
return nil, fmt.Errorf("Session provider read error: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -74,8 +74,8 @@ func (pder *ProviderFiles) Init(sid string) (sess *SessionFile, err error) {
|
||||||
return &SessionFile{sid}, nil
|
return &SessionFile{sid}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read return existing session by sid or new session if not exists
|
// Load return existing session by sid or new session if not exists
|
||||||
func (pder *ProviderFiles) Read(sid string) (sess *SessionFile, err error) {
|
func (pder *ProviderFiles) Load(sid string) (sess *SessionFile, err error) {
|
||||||
pder.lock.Lock()
|
pder.lock.Lock()
|
||||||
defer pder.lock.Unlock()
|
defer pder.lock.Unlock()
|
||||||
if pder.Exists(sid) {
|
if pder.Exists(sid) {
|
||||||
|
@ -98,8 +98,8 @@ type SessionFile struct {
|
||||||
sid string
|
sid string
|
||||||
}
|
}
|
||||||
|
|
||||||
// load data from session file
|
// loadFromFile data from session file
|
||||||
func (sf *SessionFile) load() (data map[any]any, err error) {
|
func (sf *SessionFile) loadFromFile() (data map[any]any, err error) {
|
||||||
var sb []byte
|
var sb []byte
|
||||||
sfp := ckdirpath(sf.sid)
|
sfp := ckdirpath(sf.sid)
|
||||||
if sb, err = os.ReadFile(sfp); err != nil {
|
if sb, err = os.ReadFile(sfp); err != nil {
|
||||||
|
@ -116,8 +116,8 @@ func (sf *SessionFile) load() (data map[any]any, err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// save data into session file
|
// saveToFile data into session file
|
||||||
func (sf *SessionFile) save(data map[any]any) (err error) {
|
func (sf *SessionFile) saveToFile(data map[any]any) (err error) {
|
||||||
var gobdata bytes.Buffer
|
var gobdata bytes.Buffer
|
||||||
enc := gob.NewEncoder(&gobdata)
|
enc := gob.NewEncoder(&gobdata)
|
||||||
if err = enc.Encode(data); err != nil {
|
if err = enc.Encode(data); err != nil {
|
||||||
|
@ -134,7 +134,7 @@ func (sf *SessionFile) save(data map[any]any) (err error) {
|
||||||
func (sf *SessionFile) Get(k any) (v any, err error) {
|
func (sf *SessionFile) Get(k any) (v any, err error) {
|
||||||
defer pder.updateAtime(sf.sid)
|
defer pder.updateAtime(sf.sid)
|
||||||
var data map[any]any
|
var data map[any]any
|
||||||
if data, err = sf.load(); err != nil {
|
if data, err = sf.loadFromFile(); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return data[k], nil
|
return data[k], nil
|
||||||
|
@ -144,22 +144,22 @@ func (sf *SessionFile) Get(k any) (v any, err error) {
|
||||||
func (sf *SessionFile) Set(k, v any) (err error) {
|
func (sf *SessionFile) Set(k, v any) (err error) {
|
||||||
defer pder.updateAtime(sf.sid)
|
defer pder.updateAtime(sf.sid)
|
||||||
var data map[any]any
|
var data map[any]any
|
||||||
if data, err = sf.load(); err != nil {
|
if data, err = sf.loadFromFile(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
data[k] = v
|
data[k] = v
|
||||||
return sf.save(data)
|
return sf.saveToFile(data)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Delete remove value of key k from session
|
// Delete remove value of key k from session
|
||||||
func (sf *SessionFile) Delete(k any) (err error) {
|
func (sf *SessionFile) Delete(k any) (err error) {
|
||||||
defer pder.updateAtime(sf.sid)
|
defer pder.updateAtime(sf.sid)
|
||||||
var data map[any]any
|
var data map[any]any
|
||||||
if data, err = sf.load(); err != nil {
|
if data, err = sf.loadFromFile(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
delete(data, k)
|
delete(data, k)
|
||||||
return sf.save(data)
|
return sf.saveToFile(data)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SessionID return sid
|
// SessionID return sid
|
||||||
|
|
|
@ -58,7 +58,7 @@ func (pder *ProviderMemory) Exists(sid string) (ex bool) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// read return existing unexpired session or create new
|
// read return existing unexpired session or create new
|
||||||
func (pder *ProviderMemory) Read(sid string) (ses session.Session, err error) {
|
func (pder *ProviderMemory) Load(sid string) (ses session.Session, err error) {
|
||||||
pder.lock.Lock()
|
pder.lock.Lock()
|
||||||
defer pder.lock.Unlock()
|
defer pder.lock.Unlock()
|
||||||
if ssel, ok := pder.sessions[sid]; ok {
|
if ssel, ok := pder.sessions[sid]; ok {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue