Files
wire/main.go
2026-05-25 16:11:20 -04:00

73 lines
1.4 KiB
Go

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)
}