in go/wsl/hub/hub.go [56:91]
func (h *Hub) ServeHTTP(w http.ResponseWriter, r *http.Request) {
path := strings.Split(r.URL.Path, "/")[1:]
if len(path) < 1 || path[0] != "session" {
errorResponse(w, http.StatusNotFound, 9, "unknown command", fmt.Sprintf("%q is not a known command", r.URL.Path))
return
}
if r.Method == http.MethodPost && len(path) == 1 {
h.newSession(w, r)
return
}
if len(path) < 2 {
errorResponse(w, http.StatusMethodNotAllowed, 9, "unknown method", fmt.Sprintf("%s is not a supported method for /session", r.Method))
return
}
driver := h.driver(path[1])
if driver == nil {
errorResponse(w, http.StatusNotFound, 6, "invalid session id", fmt.Sprintf("%q is not an active session", path[1]))
return
}
if r.Method == http.MethodDelete && len(path) == 2 {
h.quitSession(path[1], driver, w, r)
return
}
if (len(path) == 3 && path[2] == "file") || (len(path) == 4 && path[2] == "se" && path[3] == "file") {
h.uploader.ServeHTTP(w, r)
return
}
driver.Forward(r.Context(), w, r)
}