MCPcopy Create free account
hub / github.com/cli/gh-webhook / handleWebsocket

Function handleWebsocket

webhook/forward.go:106–136  ·  view source on GitHub ↗

handleWebsocket mediates between websocket server and local web server

(out io.Writer, url, token, wsURL string, activateHook func() error)

Source from the content-addressed store, hash-verified

104
105// handleWebsocket mediates between websocket server and local web server
106func handleWebsocket(out io.Writer, url, token, wsURL string, activateHook func() error) error {
107 c, err := dial(token, wsURL)
108 if err != nil {
109 return fmt.Errorf("error dialing to ws server: %w", err)
110 }
111 defer c.Close()
112
113 fmt.Fprintln(os.Stderr, "Forwarding Webhook events from GitHub...")
114 if err := activateHook(); err != nil {
115 return fmt.Errorf("error activating hook: %w", err)
116 }
117
118 for {
119 var ev wsEventReceived
120 err := c.ReadJSON(&ev)
121 if err != nil {
122 return fmt.Errorf("error receiving json event: %w", err)
123 }
124
125 resp, err := forwardEvent(out, url, ev)
126 if err != nil {
127 fmt.Fprintf(os.Stderr, "warning: error forwarding event: %v\n", err)
128 continue
129 }
130
131 err = c.WriteJSON(resp)
132 if err != nil {
133 return fmt.Errorf("error writing json event: %w", err)
134 }
135 }
136}
137
138// dial connects to the websocket server
139func dial(token, url string) (*websocket.Conn, error) {

Callers 1

runFwdFunction · 0.85

Calls 2

dialFunction · 0.85
forwardEventFunction · 0.85

Tested by

no test coverage detected