Switch to pointers, add mtime check
This commit is contained in:
parent
1e3becdda8
commit
6a80c5fccd
50
handlers.go
50
handlers.go
|
@ -1,6 +1,7 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"html/template"
|
||||
"log"
|
||||
"math/rand"
|
||||
|
@ -10,9 +11,12 @@ import (
|
|||
|
||||
// Serves the webpage created by createRoot()
|
||||
func root(writer http.ResponseWriter, request *http.Request) {
|
||||
r := parseList()
|
||||
if modify() {
|
||||
r = parseList()
|
||||
fmt.Println("Parsed the list again")
|
||||
}
|
||||
var table string
|
||||
for _, member := range r {
|
||||
for _, member := range *r {
|
||||
table = table + " <tr>\n"
|
||||
table = table + " <td>" + member.handle + "</td>\n"
|
||||
table = table + " <td>" + link(member.url) + "</td>\n"
|
||||
|
@ -30,49 +34,61 @@ func root(writer http.ResponseWriter, request *http.Request) {
|
|||
// Redirects the visitor to the next member, wrapping around the list if the
|
||||
// next would be out-of-bounds
|
||||
func next(writer http.ResponseWriter, request *http.Request) {
|
||||
if modify() {
|
||||
r = parseList()
|
||||
}
|
||||
host := request.URL.Query().Get("host")
|
||||
dest := "https://"
|
||||
list := parseList()
|
||||
for i, item := range list {
|
||||
dest, success := "https://", false
|
||||
for i, item := range *r {
|
||||
if item.url == host {
|
||||
if i+1 >= len(list) {
|
||||
dest = dest + list[0].url
|
||||
if i+1 >= len(*r) {
|
||||
dest = dest + (*r)[0].url
|
||||
http.Redirect(writer, request, dest, 302)
|
||||
success = true
|
||||
break
|
||||
}
|
||||
dest = dest + list[i+1].url
|
||||
dest = dest + (*r)[i+1].url
|
||||
http.Redirect(writer, request, dest, 302)
|
||||
success = true
|
||||
break
|
||||
}
|
||||
}
|
||||
http.Error(writer, "Ring member '"+host+"' not found.", 404)
|
||||
if success == false {
|
||||
http.Error(writer, "Ring member '"+host+"' not found.", 404)
|
||||
}
|
||||
}
|
||||
|
||||
// Redirects the visitor to the previous member, wrapping around the list if the
|
||||
// next would be out-of-bounds
|
||||
func previous(writer http.ResponseWriter, request *http.Request) {
|
||||
if modify() {
|
||||
r = parseList()
|
||||
}
|
||||
host := request.URL.Query().Get("host")
|
||||
dest := "https://"
|
||||
list := parseList()
|
||||
for i, item := range list {
|
||||
dest, success := "https://", false
|
||||
for i, item := range *r {
|
||||
if item.url == host {
|
||||
if i-1 < 0 {
|
||||
dest = dest + list[len(list)-1].url
|
||||
dest = dest + (*r)[len(*r)-1].url
|
||||
http.Redirect(writer, request, dest, 302)
|
||||
break
|
||||
}
|
||||
dest = dest + list[i-1].url
|
||||
dest = dest + (*r)[i-1].url
|
||||
http.Redirect(writer, request, dest, 302)
|
||||
break
|
||||
}
|
||||
}
|
||||
http.Error(writer, "Ring member '"+host+"' not found.", 404)
|
||||
if success == false {
|
||||
http.Error(writer, "Ring member '"+host+"' not found.", 404)
|
||||
}
|
||||
}
|
||||
|
||||
// Redirects the visitor to a random member
|
||||
func random(writer http.ResponseWriter, request *http.Request) {
|
||||
if modify() {
|
||||
r = parseList()
|
||||
}
|
||||
rand.Seed(time.Now().Unix())
|
||||
list := parseList()
|
||||
dest := "https://" + list[rand.Intn(len(list)-1)].url
|
||||
dest := "https://" + (*r)[rand.Intn(len(*r)-1)].url
|
||||
http.Redirect(writer, request, dest, 302)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue