MCPcopy
hub / github.com/gorilla/websocket / ServeHTTP

Method ServeHTTP

client_server_test.go:78–125  ·  client_server_test.go::cstHandler.ServeHTTP
(w http.ResponseWriter, r *http.Request)

Source from the content-addressed store, hash-verified

76}
77
78func (t cstHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
79 if r.URL.Path != cstPath {
80 t.Logf("path=%v, want %v", r.URL.Path, cstPath)
81 http.Error(w, "bad path", http.StatusBadRequest)
82 return
83 }
84 if r.URL.RawQuery != cstRawQuery {
85 t.Logf("query=%v, want %v", r.URL.RawQuery, cstRawQuery)
86 http.Error(w, "bad path", http.StatusBadRequest)
87 return
88 }
89 subprotos := Subprotocols(r)
90 if !reflect.DeepEqual(subprotos, cstDialer.Subprotocols) {
91 t.Logf("subprotols=%v, want %v", subprotos, cstDialer.Subprotocols)
92 http.Error(w, "bad protocol", http.StatusBadRequest)
93 return
94 }
95 ws, err := cstUpgrader.Upgrade(w, r, http.Header{"Set-Cookie": {"sessionID=1234"}})
96 if err != nil {
97 t.Logf("Upgrade: %v", err)
98 return
99 }
100 defer ws.Close()
101
102 if ws.Subprotocol() != "p1" {
103 t.Logf("Subprotocol() = %s, want p1", ws.Subprotocol())
104 ws.Close()
105 return
106 }
107 op, rd, err := ws.NextReader()
108 if err != nil {
109 t.Logf("NextReader: %v", err)
110 return
111 }
112 wr, err := ws.NextWriter(op)
113 if err != nil {
114 t.Logf("NextWriter: %v", err)
115 return
116 }
117 if _, err = io.Copy(wr, rd); err != nil {
118 t.Logf("NextWriter: %v", err)
119 return
120 }
121 if err := wr.Close(); err != nil {
122 t.Logf("Close: %v", err)
123 return
124 }
125}
126
127func makeWsProto(s string) string {
128 return "ws" + strings.TrimPrefix(s, "http")

Callers 2

TestProxyDialFunction · 0.80

Calls 7

SubprotocolsFunction · 0.85
UpgradeMethod · 0.80
SubprotocolMethod · 0.80
NextReaderMethod · 0.80
NextWriterMethod · 0.80
ErrorMethod · 0.45
CloseMethod · 0.45

Tested by

no test coverage detected