43 lines
920 B
Go
43 lines
920 B
Go
package session
|
|
|
|
import (
|
|
"errors"
|
|
"lishwist/http/internal/id"
|
|
|
|
"github.com/gorilla/securecookie"
|
|
"github.com/gorilla/sessions"
|
|
)
|
|
|
|
var inMemStore = make(map[string]string)
|
|
|
|
var errNotFound = errors.New("not found")
|
|
|
|
func NewInMemoryStore(keyPairs ...[]byte) *Store {
|
|
return &Store{
|
|
callbacks: Callbacks{
|
|
Delete: func(key string) error {
|
|
delete(inMemStore, key)
|
|
return nil
|
|
},
|
|
Insert: func(encodedValues string) (string, error) {
|
|
key := id.Generate()
|
|
inMemStore[key] = encodedValues
|
|
return key, nil
|
|
},
|
|
Select: func(key string) (string, error) {
|
|
encodedValues, ok := inMemStore[key]
|
|
if !ok {
|
|
return "", errNotFound
|
|
}
|
|
return encodedValues, nil
|
|
},
|
|
Update: func(key string, encodedValues string) error {
|
|
inMemStore[key] = encodedValues
|
|
return nil
|
|
},
|
|
},
|
|
Codecs: securecookie.CodecsFromPairs(keyPairs...),
|
|
Options: &sessions.Options{},
|
|
}
|
|
}
|