package main import ( _ "embed" "flag" "fmt" "html/template" "log" "net/http" "wire/internal/api" "wire/internal/articles" "wire/internal/config" "wire/internal/ramblings" ) //go:embed version var version string var verboseFlag = flag.Bool("verbose", false, "Enable verbose logging") type Data struct { Version string Quote template.HTML Ramblings ramblings.Ramblings Articles articles.Articles Config config.Config } type Quote struct { Q string `json:"q"` A string `json:"a"` H string `json:"h"` } var data Data = Data{ Version: version, } func main() { flag.Parse() cfg := config.NewConfig() cfg.ReadConfig() data.Config = cfg ap := articles.NewParser(cfg.Articles_Path) data.Articles = ap.GetArticles() rp := ramblings.NewParser(cfg.Ramblings_Path) data.Ramblings = rp.GetRamblings() for _, ramble := range rp.GetRamblings() { http.HandleFunc("/" + ramble.Link, ramblings.NewHandler(ramble)) } quote, err := api.FetchJSON[[]Quote]("https://zenquotes.io/api/today") if err != nil { log.Fatal(err) } data.Quote = template.HTML(quote[0].H) http.HandleFunc("/", mainHandler) fmt.Println("wire: starting server at http://127.0.0.1:1337") log.Fatal(http.ListenAndServe("127.0.0.1:1337", nil)) } func mainHandler(w http.ResponseWriter, r *http.Request) { tmpl := template.Must(template.ParseFiles("templates/main.html")) tmpl.ExecuteTemplate(w, "main.html", data) }