-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathupdatesession.go
More file actions
109 lines (94 loc) · 2.52 KB
/
updatesession.go
File metadata and controls
109 lines (94 loc) · 2.52 KB
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
package eidc32proxy
import (
"net/url"
)
//updateSessionData updates the session struct based on the contents of the message
func (o *Session) updateSessionData(msg *Message) error {
switch msg.GetType() {
case MsgTypeConnectedResponse:
return o.updateSessionDataWithConnectedResponse(msg)
case MsgTypeGetoutboundRequest:
return o.updateSessionDataApiCredentials(msg)
case MsgTypeGetoutboundResponse:
return o.updateSessionDataWithGetoutboundResponse(msg)
case MsgTypeSetWebUserRequest:
return o.updateSessionDataWithSetWebUserRequest(msg)
case MsgTypeEnableEventsResponse:
return o.updateSessionDataWithEnableEventsResponse(msg)
case MsgTypePointStatusRequest:
return o.updateSessionDataWithPointStatusRequest(msg)
case MsgTypeHeartbeatResponse:
return o.updateSessionDataWithHeartbeatResponse(msg)
default:
return nil
}
}
func (o *Session) updateSessionDataWithConnectedResponse(msg *Message) error {
r, err := msg.ParseConnectedResponse()
if err != nil {
return err
}
if o.serverKeys[len(o.serverKeys)-1] != r.ServerKey {
o.serverKeys = append(o.serverKeys, r.ServerKey)
}
return nil
}
func (o *Session) updateSessionDataApiCredentials(msg *Message) error {
u, err := url.Parse(msg.Request.URL.String())
if err != nil {
return err
}
values, err := url.ParseQuery(u.RawQuery)
if err != nil {
return err
}
o.apiCreds = UsernameAndPassword{
username: values.Get(queryParamUsername),
password: values.Get(queryParamPassword),
}
return nil
}
func (o *Session) updateSessionDataWithGetoutboundResponse(msg *Message) error {
r, err := msg.ParseGetOutboundResponse()
if err != nil {
return err
}
o.getOutboundResponse = r
return nil
}
func (o *Session) updateSessionDataWithSetWebUserRequest(msg *Message) error {
r, err := msg.ParseSetWebUserRequest()
if err != nil {
return err
}
o.webCreds = UsernameAndPassword{
username: r.User,
password: r.Password,
}
return nil
}
func (o *Session) updateSessionDataWithEnableEventsResponse(msg *Message) error {
eventsEnabled, err := msg.ParseEnableEventsResponse()
if err != nil {
return err
}
o.eventsEnabled = eventsEnabled
return nil
}
func (o *Session) updateSessionDataWithPointStatusRequest(msg *Message) error {
ps, err := msg.ParsePointStatusRequest()
if err != nil {
return err
}
for _, p := range ps.Points {
o.pointStatus[p.PointID] = p
}
return nil
}
func (o *Session) updateSessionDataWithHeartbeatResponse(msg *Message) error {
o.heartbeats++
return nil
}
func (o *Session) HeartBeats() uint32 {
return o.heartbeats
}