This repository has no description
1package pipelines
2
3import (
4 "strings"
5
6 "github.com/gorilla/websocket"
7)
8
9type LogEvent struct {
10 Msg []byte
11 Err error
12}
13
14func (ev *LogEvent) IsCloseError() bool {
15 return websocket.IsCloseError(
16 ev.Err,
17 websocket.CloseNormalClosure,
18 websocket.CloseGoingAway,
19 websocket.CloseAbnormalClosure,
20 )
21}
22
23func ReadLogs(conn *websocket.Conn, ch chan LogEvent) {
24 defer close(ch)
25 for {
26 if conn == nil {
27 return
28 }
29 _, msg, err := conn.ReadMessage()
30 if err != nil {
31 ch <- LogEvent{Err: err}
32 return
33 }
34 ch <- LogEvent{Msg: msg}
35 }
36}
37
38func SpindleURL(dev bool, spindle, knot, rkey, workflow string) string {
39 scheme := "wss"
40 if dev {
41 scheme = "ws"
42 }
43 return scheme + "://" + strings.Join([]string{spindle, "logs", knot, rkey, workflow}, "/")
44}