Example #1
0
func stringToState(str string) (apipb.ReleaseState, error) {
	switch str {
	case "waiting":
		return apipb.ReleaseState_WAITING, nil
	case "validated":
		return apipb.ReleaseState_VALIDATED, nil
	case "production":
		return apipb.ReleaseState_PRODUCTION, nil
	case "created":
		return apipb.ReleaseState_CREATED, nil
	case "rejected":
		return apipb.ReleaseState_REJECTED, nil
	case "dev":
		return apipb.ReleaseState_DEVELOPMENT, nil
	default:
		return apipb.ReleaseState(-1), errors.New("invalid state name")
	}
}
Example #2
0
func ToReleaseState(is apipb.ListGamesRequest_InnerState) apipb.ReleaseState {
	if is == apipb.ListGamesRequest_ANY {
		return apipb.ReleaseState(-1)
	}
	return apipb.ReleaseState(apipb.ReleaseState_value[apipb.ListGamesRequest_InnerState_name[int32(is)]])
}
Example #3
0
func (ab *abManager) streamGameInfo(gameid, uniqueName, version string, stream ListGamesWithTestsStream, wg *sync.WaitGroup) {
	app, err := ab.App(gameid)
	if err != nil {
		logrus.WithError(err).Errorf("failed to get app test info of %s", gameid)
		wg.Done()
		return
	}
	res := &otsimopb.ListItemWithTests{
		GameId:         gameid,
		UniqueName:     uniqueName,
		TestingVersion: app.Version,
	}

	///////////////////
	grp, err := ab.db.GetGameReleaseRepo().GetLatest(gameid, models.NoTestGroup)
	if err != nil {
		logrus.WithError(err).Errorf("failed to get game release of %s", gameid)
		wg.Done()
		return
	}

	g2 := &otsimopb.ListItemWithTests_TestGroup{
		Name:              "",
		Weight:            models.NoTestGroupWeight,
		LatestVersion:     grp.Version,
		LatestState:       grp.ReleaseState,
		ProductionVersion: version,
		ReleasedAt:        grp.ReleasedAt,
		Languages:         grp.GameManifest.Languages,
	}
	if tu, err := ab.db.GetTarballRepo().Get(gameid, grp.Version); err == nil {
		g2.Storage = tu.Storage
		g2.ArchiveFormat = tu.ArchiveFormat
	} else {
		logrus.WithError(err).Errorf("failed get tarball of %s@%s", app.AppID, grp.Version)
	}
	res.Groups = append(res.Groups, g2)
	//////////////

	for _, t := range app.Tests {
		if !t.Active {
			continue
		}
		gr, err := ab.db.GetGameReleaseRepo().GetLatest(gameid, t.Name)
		if err == models.ErrorNotFound {
			g := &otsimopb.ListItemWithTests_TestGroup{
				Name:              t.Name,
				Weight:            t.Weight,
				LatestVersion:     "",
				LatestState:       otsimopb.ReleaseState(-1),
				ProductionVersion: "",
				ReleasedAt:        0,
				Languages:         []string{},
				Storage:           "",
				ArchiveFormat:     "",
			}
			res.Groups = append(res.Groups, g)
			continue
		}
		if err != nil {
			logrus.WithError(err).Errorf("failed to get latest version info of %s:%s", gameid, t.Name)
			continue
		}
		g := &otsimopb.ListItemWithTests_TestGroup{
			Name:              t.Name,
			Weight:            t.Weight,
			LatestVersion:     gr.Version,
			LatestState:       gr.ReleaseState,
			ProductionVersion: version,
			ReleasedAt:        gr.ReleasedAt,
			Languages:         gr.GameManifest.Languages,
		}
		if tu, err := ab.db.GetTarballRepo().Get(gameid, gr.Version); err == nil {
			g.Storage = tu.Storage
			g.ArchiveFormat = tu.ArchiveFormat
		} else {
			logrus.WithError(err).Errorf("failed get tarball of %s@%s", gameid, gr.Version)
		}
		res.Groups = append(res.Groups, g)
	}
	if err := stream.Send(res); err != nil {
		logrus.WithError(err).Errorf("failed get send stream data of %s", gameid)
	}
	wg.Done()
}