Using better names for functions.

Better handling forced updated
This commit is contained in:
John Donaldson 2019-12-16 23:27:30 +00:00
parent 22a646e200
commit d8064e2b1a
4 changed files with 22 additions and 7 deletions

View File

@ -33,7 +33,7 @@ func (state *LegacyMOTHState) Initialize() (bool, error) {
} }
func (state *LegacyMOTHState) login(teamName string, token string) (bool, error) { func (state *LegacyMOTHState) login(teamName string, token string) (bool, error) {
for a, _ := range state.getTeamIds() { for a, _ := range state.getValidTeamIds() {
if a == token { if a == token {
f, err := os.OpenFile(state.StatePath("teams", token), os.O_CREATE|os.O_EXCL|os.O_WRONLY, 0644) f, err := os.OpenFile(state.StatePath("teams", token), os.O_CREATE|os.O_EXCL|os.O_WRONLY, 0644)
if err != nil { if err != nil {
@ -181,7 +181,7 @@ func (state *LegacyMOTHState) Maintenance(maintenanceInterval time.Duration) {
} }
} }
func (state *LegacyMOTHState) getTeamIds() map[string]struct{} { func (state *LegacyMOTHState) getValidTeamIds() map[string]struct{} {
filepath := state.StatePath("teamids.txt") filepath := state.StatePath("teamids.txt")
teamids, err := os.Open(filepath) teamids, err := os.Open(filepath)
teams := make(map[string]struct{}) teams := make(map[string]struct{})

View File

@ -161,6 +161,7 @@ func (ctx *Instance) answerHandler(w http.ResponseWriter, req *http.Request) {
"Points awarded", "Points awarded",
fmt.Sprintf("%d points for %s!", points, teamId), fmt.Sprintf("%d points for %s!", points, teamId),
) )
ctx.update <- true
} }
func (ctx *Instance) puzzlesHandler(w http.ResponseWriter, req *http.Request) { func (ctx *Instance) puzzlesHandler(w http.ResponseWriter, req *http.Request) {

View File

@ -146,7 +146,7 @@ func (ctx *Instance) tidy() {
// readTeams reads in the list of team IDs, // readTeams reads in the list of team IDs,
// so we can quickly validate them. // so we can quickly validate them.
func (ctx *Instance) readTeams() { func (ctx *Instance) readTeams() {
teamList := ctx.State.getTeamIds() teamList := ctx.State.getValidTeamIds()
// For any new team IDs, set their next attempt time to right now // For any new team IDs, set their next attempt time to right now
now := time.Now() now := time.Now()
@ -207,7 +207,7 @@ func (ctx *Instance) Maintenance(maintenanceInterval time.Duration) {
case <-ctx.update: case <-ctx.update:
// log.Print("Forced update") // log.Print("Forced update")
case <-time.After(maintenanceInterval): case <-time.After(maintenanceInterval):
// log.Print("Housekeeping...") // log.Print("Housekeeping in main instance...")
} }
} }
} }

View File

@ -5,15 +5,29 @@ import (
) )
type MOTHState interface { type MOTHState interface {
// Perform any setup needed
Initialize() (bool, error)
// Return a list of awarded points
PointsLog(teamId string) []*Award PointsLog(teamId string) []*Award
// Award points to a team
AwardPoints(teamID string, category string, points int) error AwardPoints(teamID string, category string, points int) error
// Given a team hash/token/id, retrieve the team name, if possible
TeamName(teamId string) (string, error) TeamName(teamId string) (string, error)
// Returns true if the event is currently enabled
isEnabled() bool isEnabled() bool
// Attempt to read an arbitrary configuration item, if possible
getConfig(configName string) (string, error) getConfig(configName string) (string, error)
getTeamIds() map[string]struct{}
login(teamId string, token string) (bool, error) // Return a list of valid team IDs
Initialize() (bool, error) getValidTeamIds() map[string]struct{}
// Attempt to register/log in.
login(teamName string, token string) (bool, error)
} }
var ErrAlreadyRegistered = errors.New("This team ID has already been registered") var ErrAlreadyRegistered = errors.New("This team ID has already been registered")