package main
import (
"log"
"net/http"
"sync"
"text/template"
)
// version is set at build time via -ldflags="-X main.version=..."
var version = "dev"
var importerMu sync.Mutex
var importerRunning bool
var tmpl = template.Must(template.New("index").Parse(`
Music Importer
Music Importer
`))
func handleHome(w http.ResponseWriter, r *http.Request) {
importerMu.Lock()
running := importerRunning
importerMu.Unlock()
tmpl.Execute(w, struct {
Running bool
Version string
}{Running: running, Version: version})
}
func handleRun(w http.ResponseWriter, r *http.Request) {
if r.Method != http.MethodPost {
http.Error(w, "POST only", http.StatusMethodNotAllowed)
return
}
importerMu.Lock()
running := importerRunning
importerMu.Unlock()
if running {
http.Redirect(w, r, "/", http.StatusSeeOther)
return
}
go RunImporter()
http.Redirect(w, r, "/", http.StatusSeeOther)
}
func main() {
log.Printf("Music Importer %s starting on http://localhost:8080", version)
http.HandleFunc("/", handleHome)
http.HandleFunc("/run", handleRun)
log.Fatal(http.ListenAndServe(":8080", nil))
}