//
// main.go
// Copyright (C) 2017 kevin <kevin@ie.suberic.net>
//
// Distributed under terms of the MIT license.
//

package main

import (
	"flag"
	"html/template"
	"log"
	"net/http"
	"path"

	"github.com/prometheus/client_golang/prometheus/promhttp"
	"gitlab.com/lyda/gqgmc/devices/geiger"
)

var addr = flag.String("listen-address", ":8080", "Address for HTTP requests.")
var device = flag.String("device", "/dev/gqgmc", "Device for Geiger Counter.")
var model = flag.String("model", "gqgmc", "Model of Geiger Counter.")
var templateDir = flag.String("template_dir", "templates", "Template directory.")

type indexPage struct {
	Model   string
	Version string
	Serial  string
	Volts   int16
	CPM     uint16
}

var gc geiger.Counter
var indexPg indexPage

func indexHandler(w http.ResponseWriter, r *http.Request) {
	indexPg.CPM, _ = gc.GetCPM()
	indexPg.Volts, _ = gc.Volts()
	t, err := template.ParseFiles(path.Join(*templateDir, "index.html"))
	if err != nil {
		log.Printf("Template error: %s\n", err)
	}
	t.Execute(w, &indexPg)
}

func main() {
	flag.Parse()

	gc, _ = geiger.New(geiger.Config{Model: *model, Device: *device})
	indexPg.Model = gc.Model()
	indexPg.Version = gc.Version()
	indexPg.Serial = gc.Serial()
	http.HandleFunc("/", indexHandler)
	http.Handle("/metrics", promhttp.Handler())
	log.Fatal(http.ListenAndServe(*addr, nil))
}