main.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package main
  2. import (
  3. "fmt"
  4. "log"
  5. "net/http"
  6. "os"
  7. "os/exec"
  8. "text/template"
  9. "time"
  10. "gogs.carduccidante.edu.it/karmen/core/util/pandoc"
  11. tplutil "gogs.carduccidante.edu.it/karmen/core/util/template"
  12. )
  13. var funcmap = template.FuncMap{
  14. "date": func() string {
  15. now := time.Now()
  16. return now.Format("2006-02-01")
  17. },
  18. }
  19. func convertPDFToPNG(filename string) error {
  20. out, err := exec.Command("pandoc", pandoc_args...).CombinedOutput()
  21. if string(out) != "" {
  22. return fmt.Errorf("pandoc: %s", string(out))
  23. }
  24. if err != nil {
  25. return err
  26. }
  27. return nil
  28. }
  29. func serveScreen(res http.ResponseWriter, req *http.Request) {
  30. tpl, err := tplutil.LoadTextTemplate("screen.tpl.md", funcmap)
  31. if err != nil {
  32. panic(err)
  33. }
  34. f, err := os.Create("./data/screen.md")
  35. if err != nil {
  36. panic(err)
  37. }
  38. defer f.Close()
  39. log.Println("Generating markdown file from template.")
  40. if err := tpl.Execute(f, nil); err != nil {
  41. panic(err)
  42. }
  43. log.Println("Converting markdown to pdf.")
  44. err = pandoc.Convert("./data/screen.md", "./data/screen.pdf", "-V", "geometry:papersize={3.8in,6.4in}", "-V", "pagestyle:empty")
  45. if err != nil {
  46. panic(err)
  47. }
  48. log.Println("Serving screen.png...")
  49. http.ServeFile(res, req, "./data/screen.png")
  50. }
  51. func main() {
  52. http.HandleFunc("/", serveScreen)
  53. log.Println("Start alba backend...")
  54. http.ListenAndServe(":8080", nil)
  55. }