mirror of https://github.com/dirtbags/moth.git
go fmt
This commit is contained in:
parent
8771cf9d4f
commit
8af56b515d
|
@ -106,7 +106,7 @@ func (ctx *Instance) answerHandler(w http.ResponseWriter, req *http.Request) {
|
||||||
pointstr := req.FormValue("points")
|
pointstr := req.FormValue("points")
|
||||||
answer := req.FormValue("answer")
|
answer := req.FormValue("answer")
|
||||||
|
|
||||||
if ! ctx.ValidTeamId(teamId) {
|
if !ctx.ValidTeamId(teamId) {
|
||||||
respond(
|
respond(
|
||||||
w, req, JSendFail,
|
w, req, JSendFail,
|
||||||
"Invalid team ID",
|
"Invalid team ID",
|
||||||
|
@ -251,7 +251,7 @@ func (ctx *Instance) staticHandler(w http.ResponseWriter, req *http.Request) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ctx *Instance) manifestHandler(w http.ResponseWriter, req *http.Request) {
|
func (ctx *Instance) manifestHandler(w http.ResponseWriter, req *http.Request) {
|
||||||
if (! ctx.Runtime.export_manifest) {
|
if !ctx.Runtime.export_manifest {
|
||||||
http.Error(w, "Endpoint disabled", http.StatusForbidden)
|
http.Error(w, "Endpoint disabled", http.StatusForbidden)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -262,7 +262,7 @@ func (ctx *Instance) manifestHandler(w http.ResponseWriter, req *http.Request) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if (req.Method == http.MethodHead) {
|
if req.Method == http.MethodHead {
|
||||||
w.WriteHeader(http.StatusOK)
|
w.WriteHeader(http.StatusOK)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -273,13 +273,13 @@ func (ctx *Instance) manifestHandler(w http.ResponseWriter, req *http.Request) {
|
||||||
|
|
||||||
// Pack up the theme files
|
// Pack up the theme files
|
||||||
theme_root_re := regexp.MustCompile(fmt.Sprintf("^%s/", ctx.ThemeDir))
|
theme_root_re := regexp.MustCompile(fmt.Sprintf("^%s/", ctx.ThemeDir))
|
||||||
filepath.Walk(ctx.ThemeDir, func (path string, info os.FileInfo, err error) error {
|
filepath.Walk(ctx.ThemeDir, func(path string, info os.FileInfo, err error) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if ! info.IsDir() { // Only package up files
|
if !info.IsDir() { // Only package up files
|
||||||
localized_path := theme_root_re.ReplaceAllLiteralString( path, "")
|
localized_path := theme_root_re.ReplaceAllLiteralString(path, "")
|
||||||
manifest = append(manifest, localized_path)
|
manifest = append(manifest, localized_path)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
@ -287,13 +287,13 @@ func (ctx *Instance) manifestHandler(w http.ResponseWriter, req *http.Request) {
|
||||||
|
|
||||||
// Package up files for currently-unlocked puzzles in categories
|
// Package up files for currently-unlocked puzzles in categories
|
||||||
for category_name, category := range ctx.categories {
|
for category_name, category := range ctx.categories {
|
||||||
if _, ok := ctx.MaxPointsUnlocked[category_name]; ok { // Check that the category is actually unlocked. This should never fail, probably
|
if _, ok := ctx.MaxPointsUnlocked[category_name]; ok { // Check that the category is actually unlocked. This should never fail, probably
|
||||||
for _, file := range category.zf.File {
|
for _, file := range category.zf.File {
|
||||||
parts := strings.Split(file.Name, "/")
|
parts := strings.Split(file.Name, "/")
|
||||||
|
|
||||||
if (parts[0] == "content") { // Only pick up content files, not thing like map.txt
|
if parts[0] == "content" { // Only pick up content files, not thing like map.txt
|
||||||
for _, puzzlemap := range category.puzzlemap { // Figure out which puzzles are currently unlocked
|
for _, puzzlemap := range category.puzzlemap { // Figure out which puzzles are currently unlocked
|
||||||
if (puzzlemap.Path == parts[1] && puzzlemap.Points <= ctx.MaxPointsUnlocked[category_name]) {
|
if puzzlemap.Path == parts[1] && puzzlemap.Points <= ctx.MaxPointsUnlocked[category_name] {
|
||||||
|
|
||||||
manifest = append(manifest, path.Join("content", category_name, path.Join(parts[1:]...)))
|
manifest = append(manifest, path.Join("content", category_name, path.Join(parts[1:]...)))
|
||||||
break
|
break
|
||||||
|
|
|
@ -26,16 +26,16 @@ type Instance struct {
|
||||||
ThemeDir string
|
ThemeDir string
|
||||||
AttemptInterval time.Duration
|
AttemptInterval time.Duration
|
||||||
|
|
||||||
Runtime RuntimeConfig
|
Runtime RuntimeConfig
|
||||||
|
|
||||||
categories map[string]*Mothball
|
categories map[string]*Mothball
|
||||||
MaxPointsUnlocked map[string]int
|
MaxPointsUnlocked map[string]int
|
||||||
update chan bool
|
update chan bool
|
||||||
jPuzzleList []byte
|
jPuzzleList []byte
|
||||||
jPointsLog []byte
|
jPointsLog []byte
|
||||||
nextAttempt map[string]time.Time
|
nextAttempt map[string]time.Time
|
||||||
nextAttemptMutex *sync.RWMutex
|
nextAttemptMutex *sync.RWMutex
|
||||||
mux *http.ServeMux
|
mux *http.ServeMux
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ctx *Instance) Initialize() error {
|
func (ctx *Instance) Initialize() error {
|
||||||
|
@ -139,15 +139,15 @@ func (ctx *Instance) ThemePath(parts ...string) string {
|
||||||
|
|
||||||
func (ctx *Instance) TooFast(teamId string) bool {
|
func (ctx *Instance) TooFast(teamId string) bool {
|
||||||
now := time.Now()
|
now := time.Now()
|
||||||
|
|
||||||
ctx.nextAttemptMutex.RLock()
|
ctx.nextAttemptMutex.RLock()
|
||||||
next, _ := ctx.nextAttempt[teamId]
|
next, _ := ctx.nextAttempt[teamId]
|
||||||
ctx.nextAttemptMutex.RUnlock()
|
ctx.nextAttemptMutex.RUnlock()
|
||||||
|
|
||||||
ctx.nextAttemptMutex.Lock()
|
ctx.nextAttemptMutex.Lock()
|
||||||
ctx.nextAttempt[teamId] = now.Add(ctx.AttemptInterval)
|
ctx.nextAttempt[teamId] = now.Add(ctx.AttemptInterval)
|
||||||
ctx.nextAttemptMutex.Unlock()
|
ctx.nextAttemptMutex.Unlock()
|
||||||
|
|
||||||
return now.Before(next)
|
return now.Before(next)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,6 @@ import (
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
func (pm *PuzzleMap) MarshalJSON() ([]byte, error) {
|
func (pm *PuzzleMap) MarshalJSON() ([]byte, error) {
|
||||||
if pm == nil {
|
if pm == nil {
|
||||||
return []byte("null"), nil
|
return []byte("null"), nil
|
||||||
|
@ -35,7 +34,6 @@ func (ctx *Instance) generatePuzzleList() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ret := map[string][]PuzzleMap{}
|
ret := map[string][]PuzzleMap{}
|
||||||
for catName, mb := range ctx.categories {
|
for catName, mb := range ctx.categories {
|
||||||
filtered_puzzlemap := make([]PuzzleMap, 0, 30)
|
filtered_puzzlemap := make([]PuzzleMap, 0, 30)
|
||||||
|
@ -273,11 +271,11 @@ func (ctx *Instance) isEnabled() bool {
|
||||||
func (ctx *Instance) UpdateConfig() {
|
func (ctx *Instance) UpdateConfig() {
|
||||||
// Handle export manifest
|
// Handle export manifest
|
||||||
if _, err := os.Stat(ctx.StatePath("export_manifest")); err == nil {
|
if _, err := os.Stat(ctx.StatePath("export_manifest")); err == nil {
|
||||||
if (! ctx.Runtime.export_manifest) {
|
if !ctx.Runtime.export_manifest {
|
||||||
log.Print("Enabling manifest export")
|
log.Print("Enabling manifest export")
|
||||||
ctx.Runtime.export_manifest = true
|
ctx.Runtime.export_manifest = true
|
||||||
}
|
}
|
||||||
} else if (ctx.Runtime.export_manifest) {
|
} else if ctx.Runtime.export_manifest {
|
||||||
log.Print("Disabling manifest export")
|
log.Print("Disabling manifest export")
|
||||||
ctx.Runtime.export_manifest = false
|
ctx.Runtime.export_manifest = false
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,16 +13,15 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type PuzzleMap struct {
|
type PuzzleMap struct {
|
||||||
Points int
|
Points int
|
||||||
Path string
|
Path string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
type Mothball struct {
|
type Mothball struct {
|
||||||
zf *zip.ReadCloser
|
zf *zip.ReadCloser
|
||||||
filename string
|
filename string
|
||||||
puzzlemap []PuzzleMap
|
puzzlemap []PuzzleMap
|
||||||
mtime time.Time
|
mtime time.Time
|
||||||
}
|
}
|
||||||
|
|
||||||
type MothballFile struct {
|
type MothballFile struct {
|
||||||
|
@ -161,7 +160,7 @@ func (m *Mothball) Refresh() error {
|
||||||
|
|
||||||
mf, err := m.Open("map.txt")
|
mf, err := m.Open("map.txt")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// File isn't in there
|
// File isn't in there
|
||||||
} else {
|
} else {
|
||||||
defer mf.Close()
|
defer mf.Close()
|
||||||
|
|
||||||
|
@ -183,11 +182,10 @@ func (m *Mothball) Refresh() error {
|
||||||
|
|
||||||
pm = append(pm, PuzzleMap{pointval, dir})
|
pm = append(pm, PuzzleMap{pointval, dir})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
m.puzzlemap = pm
|
|
||||||
}
|
|
||||||
|
|
||||||
|
m.puzzlemap = pm
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue