108 lines
2.8 KiB
Go
108 lines
2.8 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"fmt"
|
|
"net/http"
|
|
"os"
|
|
)
|
|
|
|
func indexHandler(w http.ResponseWriter, r *http.Request) {
|
|
setCorsAndNoCacheHeaders(&w, r)
|
|
|
|
if r.URL.Path == "/version" {
|
|
w.Header().Add("Content-Type", "application/json")
|
|
|
|
testf()
|
|
|
|
data := VersionData{Version: "2.1.4",
|
|
Changelog: "Game list should now be sorted, a new endpoint with the game list in random order have been added.",
|
|
History: []VersionData{
|
|
{
|
|
Version: "2.1.3",
|
|
Changelog: "Added a check to see if song exists before returning it, if not a new song will be picked up.",
|
|
},
|
|
{
|
|
Version: "2.1.2",
|
|
Changelog: "Added test server to swagger file.",
|
|
},
|
|
{
|
|
Version: "2.1.1",
|
|
Changelog: "Fixed bug where wrong song was showed as currently played.",
|
|
},
|
|
{
|
|
Version: "2.1.0",
|
|
Changelog: "Added /addQue to add the last received song to the songQue. " +
|
|
"Changed /rand and /rand/low to not add song to the que. " +
|
|
"Changed /next to not call /rand when the end of the que is reached, instead the last song in the que will be resent.",
|
|
},
|
|
{
|
|
Version: "2.0.3",
|
|
Changelog: "Another small change that should fix the caching problem.",
|
|
},
|
|
{
|
|
Version: "2.0.2",
|
|
Changelog: "Hopefully fixed the caching problem with random.",
|
|
},
|
|
{
|
|
Version: "2.0.1",
|
|
Changelog: "Fixed CORS",
|
|
},
|
|
{
|
|
Version: "2.0.0",
|
|
Changelog: "Rebuilt the application in Go.",
|
|
},
|
|
{
|
|
Version: "1.2.0",
|
|
Changelog: "Made the /sync endpoint async. " +
|
|
"Fixed bug where the game list wasn't reloaded when using /reset. " +
|
|
"Fixed bug where the songNo showed in the list didn't match what should be sent.",
|
|
},
|
|
{
|
|
Version: "1.1.0",
|
|
Changelog: "Added sync endpoint, don't really trust it to 100%, would say beta. " +
|
|
"Fixed bug with /next after /previous. Added /reset endpoint. " +
|
|
"Added some info more to /info and /list.",
|
|
},
|
|
{
|
|
Version: "1.0.0",
|
|
Changelog: "Added swagger documentation. Created version 1.0.",
|
|
},
|
|
{
|
|
Version: "0.5.5",
|
|
Changelog: "Added increase played endpoint.",
|
|
},
|
|
},
|
|
}
|
|
_ = json.NewEncoder(w).Encode(data)
|
|
|
|
} else if r.URL.Path == "/doc" {
|
|
http.ServeFile(w, r, "./doc/swagger.yaml")
|
|
|
|
} else if r.URL.Path == "/" {
|
|
rows, dbErr := dbPool.Query(context.Background(), "select game_name from game")
|
|
if dbErr != nil {
|
|
_, _ = fmt.Fprintf(os.Stderr, "QueryRow failed: %v\n", dbErr)
|
|
os.Exit(1)
|
|
}
|
|
for rows.Next() {
|
|
var gameName string
|
|
dbErr = rows.Scan(&gameName)
|
|
if dbErr != nil {
|
|
_, _ = fmt.Fprintf(os.Stderr, "QueryRow failed: %v\n", dbErr)
|
|
}
|
|
_, _ = fmt.Fprintf(w, "%v\n", gameName)
|
|
}
|
|
|
|
_, err := fmt.Fprint(w, "Hello, World!!")
|
|
if err != nil {
|
|
w.WriteHeader(http.StatusInternalServerError)
|
|
}
|
|
} else {
|
|
http.NotFound(w, r)
|
|
return
|
|
}
|
|
|
|
}
|