68 lines
1.3 KiB
Go
68 lines
1.3 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"log"
|
||
|
"net/http"
|
||
|
"os"
|
||
|
"os/exec"
|
||
|
"text/template"
|
||
|
"time"
|
||
|
|
||
|
"gogs.carduccidante.edu.it/karmen/core/util/pandoc"
|
||
|
tplutil "gogs.carduccidante.edu.it/karmen/core/util/template"
|
||
|
)
|
||
|
|
||
|
var funcmap = template.FuncMap{
|
||
|
"date": func() string {
|
||
|
now := time.Now()
|
||
|
|
||
|
return now.Format("2006-02-01")
|
||
|
},
|
||
|
}
|
||
|
|
||
|
func convertPDFToPNG(filename string) error {
|
||
|
out, err := exec.Command("pandoc", pandoc_args...).CombinedOutput()
|
||
|
if string(out) != "" {
|
||
|
return fmt.Errorf("pandoc: %s", string(out))
|
||
|
}
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func serveScreen(res http.ResponseWriter, req *http.Request) {
|
||
|
tpl, err := tplutil.LoadTextTemplate("screen.tpl.md", funcmap)
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
|
||
|
f, err := os.Create("./data/screen.md")
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
defer f.Close()
|
||
|
|
||
|
log.Println("Generating markdown file from template.")
|
||
|
if err := tpl.Execute(f, nil); err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
|
||
|
log.Println("Converting markdown to pdf.")
|
||
|
err = pandoc.Convert("./data/screen.md", "./data/screen.pdf", "-V", "geometry:papersize={3.8in,6.4in}", "-V", "pagestyle:empty")
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
|
||
|
log.Println("Serving screen.png...")
|
||
|
http.ServeFile(res, req, "./data/screen.png")
|
||
|
}
|
||
|
|
||
|
func main() {
|
||
|
http.HandleFunc("/", serveScreen)
|
||
|
|
||
|
log.Println("Start alba backend...")
|
||
|
http.ListenAndServe(":8080", nil)
|
||
|
}
|