func (db *dbImpl) addRound(id gameID, round botapi.Replay_Round) error { return db.Update(func(tx *bolt.Tx) error { b := tx.Bucket(GameBucket) key := []byte(id) data := b.Get(key) if len(data) == 0 { return errDatastoreNotFound } msg, err := capnp.Unmarshal(copyBytes(data)) if err != nil { return err } orig, err := botapi.ReadRootReplay(msg) if err != nil { return err } newMsg, err := addReplayRound(orig, round) if err != nil { return err } newData, err := newMsg.Marshal() if err != nil { return err } return b.Put(key, newData) }) }
func GetReplay(url string) *js.Object { resp, _ := http.Get(url) defer resp.Body.Close() d, _ := ioutil.ReadAll(resp.Body) msg, _ := capnp.Unmarshal(d) r, _ := botapi.ReadRootReplay(msg) return js.MakeWrapper(engine.NewReplay(r)) }
func (db *dbImpl) lookupGame(id gameID) (botapi.Replay, error) { var r botapi.Replay err := db.View(func(tx *bolt.Tx) error { b := tx.Bucket(GameBucket) data := b.Get([]byte(id)) if len(data) == 0 { return errDatastoreNotFound } msg, err := capnp.Unmarshal(copyBytes(data)) if err != nil { return err } r, err = botapi.ReadRootReplay(msg) return err }) return r, err }
func GetReplayFromString(replayString string) *js.Object { // Will it work? It's not Unicode clean msg, _ := capnp.Unmarshal([]byte(replayString)) r, _ := botapi.ReadRootReplay(msg) return js.MakeWrapper(engine.NewReplay(r)) }