/
frame.go
55 lines (46 loc) · 1.25 KB
/
frame.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
47
48
49
50
51
52
53
54
55
package websocket
import "context"
const (
GetCommandMethod = iota + 1
DeleteCommandMethod
PostCommandMethod
PatchCommandMethod
NotifyCommandMethod
ErrorCommandMethod
HeartbeatCommandMethod
)
const (
RequestContextCommandKey = "command"
RequestContextSourceKey = "Source"
RequestContextIDKey = "id"
)
type RESTCommand struct {
Ressource string `json:"ressource"`
Method int `json:"method"`
}
type messageFrame struct {
Command RESTCommand `json:"command"`
Source int `json:"source"`
ID int `json:"id"`
Payload interface{} `json:"payload"`
}
func NewRequestContext(command RESTCommand, id, sourceCtx int) context.Context {
ctx := context.WithValue(context.Background(), RequestContextCommandKey, command)
ctx = context.WithValue(ctx, RequestContextSourceKey, sourceCtx)
return context.WithValue(ctx, RequestContextIDKey, id)
}
func newFrame(source, id int, command RESTCommand, payload interface{}) messageFrame {
return messageFrame{
Command: command,
Source: source,
Payload: payload,
ID: id,
}
}
func makeErrorMessage(err error, id int, ressource string) messageFrame {
command := RESTCommand{
Ressource: ressource,
Method: ErrorCommandMethod,
}
return newFrame(-1, id, command, err)
}