package main
import (
"encoding/xml"
"fmt"
"log"
"net/http"
"net/http/cgi"
"os"
"path/filepath"
)
type Icon struct {
Href string `xml:"href,attr"`
}
type Recipe struct {
Title string `xml:"title"`
Icon Icon `xml:"icon"`
}
func site(w http.ResponseWriter, r *http.Request) {
files, err := os.ReadDir(".")
if err != nil {
log.Fatal(err)
}
fmt.Fprintln(w, `
Index of /~oc45ujef/recipes
Rezepte
`)
for _, file := range files {
if filepath.Ext(file.Name()) == ".xml" {
contents, err := os.ReadFile(file.Name())
if err != nil {
log.Println(err)
continue
}
var parsed Recipe
if err = xml.Unmarshal(contents, &parsed); err != nil {
log.Println(err)
continue
}
fmt.Fprintf(w, "
%s", file.Name(), parsed.Title, parsed.Icon.Href, parsed.Title)
}
}
fmt.Fprint(w, `
`)
}
func main() {
if err := cgi.Serve(http.HandlerFunc(site)); err != nil {
log.Println(err)
}
}