diff --git a/main.go b/main.go index dfa1089..cb9588f 100644 --- a/main.go +++ b/main.go @@ -5,6 +5,7 @@ package main import ( "fmt" "log" + "math/rand" "net/http" "os" "path/filepath" @@ -67,6 +68,21 @@ func handlerReindex(w http.ResponseWriter, rq *http.Request) { log.Println("Indexed", len(HyphaStorage), "hyphae") } +// Redirect to a random hypha. +func handlerRandom(w http.ResponseWriter, rq *http.Request) { + log.Println(rq.URL) + var randomHyphaName string + i := rand.Intn(len(HyphaStorage)) + for hyphaName := range HyphaStorage { + if i == 0 { + randomHyphaName = hyphaName + break + } + i-- + } + http.Redirect(w, rq, "/page/"+randomHyphaName, http.StatusSeeOther) +} + func main() { log.Println("Running MycorrhizaWiki β") @@ -91,6 +107,7 @@ func main() { // See http_mutators.go for /upload-binary/, /upload-text/, /edit/. http.HandleFunc("/list", handlerList) http.HandleFunc("/reindex", handlerReindex) + http.HandleFunc("/random", handlerRandom) http.HandleFunc("/favicon.ico", func(w http.ResponseWriter, rq *http.Request) { http.ServeFile(w, rq, WikiDir+"/static/favicon.ico") }) diff --git a/metarrhiza b/metarrhiza index ce6ffcd..bdaaab6 160000 --- a/metarrhiza +++ b/metarrhiza @@ -1 +1 @@ -Subproject commit ce6ffcdb83be6d5d5d15f0a8d240db5430889d45 +Subproject commit bdaaab62574023487610d608d1e9f2f351707a7f