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

Function forwardEvent

webhook/forward.go:160–200  ·  view source on GitHub ↗

forwardEvent forwards events to the server running on the local port specified by the user

(w io.Writer, url string, ev wsEventReceived)

Source from the content-addressed store, hash-verified

158
159// forwardEvent forwards events to the server running on the local port specified by the user
160func forwardEvent(w io.Writer, url string, ev wsEventReceived) (*httpEventForward, error) {
161 if url == "" {
162 event := ev.Header.Get("X-GitHub-Event")
163 event = strings.ReplaceAll(event, "\n", "")
164 event = strings.ReplaceAll(event, "\r", "")
165 fmt.Fprintf(os.Stderr, "[LOG] received event %q\n", event)
166 if _, err := w.Write(ev.Body); err != nil {
167 return nil, err
168 }
169 if _, err := w.Write([]byte("\n")); err != nil {
170 return nil, err
171 }
172 return &httpEventForward{Status: 200, Header: make(http.Header), Body: []byte("OK")}, nil
173 }
174
175 req, err := http.NewRequest(http.MethodPost, url, bytes.NewReader(ev.Body))
176 if err != nil {
177 return nil, err
178 }
179
180 for k := range ev.Header {
181 req.Header.Set(k, ev.Header.Get(k))
182 }
183
184 resp, err := http.DefaultClient.Do(req)
185 if err != nil {
186 return nil, err
187 }
188
189 defer resp.Body.Close()
190 body, err := io.ReadAll(resp.Body)
191 if err != nil {
192 return nil, err
193 }
194
195 return &httpEventForward{
196 Status: resp.StatusCode,
197 Header: resp.Header,
198 Body: body,
199 }, nil
200}

Callers 1

handleWebsocketFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected