-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathsession.go
46 lines (39 loc) · 869 Bytes
/
session.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package ussd
import (
"github.com/samora/ussd-go/sessionstores"
"strings"
)
type session struct {
store sessionstores.Store
routeKey string
}
func newSession(store sessionstores.Store, request *Request) *session {
return &session{
store: store,
routeKey: request.Mobile + "Route",
}
}
func (s session) Set(r route) {
route := r.Ctrl + "." + r.Action
err := s.store.SetValue(s.routeKey, route)
if err != nil {
panicln("session: %v", err)
}
}
func (s session) Get() route {
rStr, err := s.store.GetValue(s.routeKey)
if err != nil {
panicln("session: %v", err)
}
routes := strings.Split(rStr, ".")
if len(routes) != 2 {
panicln("session: route not found")
}
return route{routes[0], routes[1]}
}
func (s session) Exists() bool {
return s.store.ValueExists(s.routeKey)
}
func (s session) Close() {
s.store.DeleteValue(s.routeKey)
}