package main import ( "bytes" "fmt" "io" "net/http" "path" "slices" "strings" ) func isV1(r *http.Request) bool { return strings.HasPrefix(r.URL.Path, "/v1/") } func (s *S) serveV1(w http.ResponseWriter, r *http.Request) error { switch path.Join(r.Method, r.URL.Path) { case "GET/v1/state/" + s.Session(r.Context()).ID: return fmt.Errorf("not impl") case "PUT/v1/state/" + s.Session(r.Context()).ID + "/party": return s.serveV1PutParty(w, r) default: http.NotFound(w, r) } return nil } func (s *S) serveV1PutParty(w http.ResponseWriter, r *http.Request) error { party, err := io.ReadAll(r.Body) if err != nil { return err } party = bytes.TrimSpace(party) if len(party) == 0 { return nil } gid, err := s.games.GameByName(r.Context(), string(party)) if err != nil { return err } games, err := s.games.GamesForUser(r.Context(), gid) if err != nil { return err } if slices.Contains(games, gid) { return nil } return fmt.Errorf("not impl create player join") }