73 lines
1.4 KiB
Go
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)
|
|
}
|