12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- package api
- import (
- "io/ioutil"
- "net/http"
- "os"
- "path/filepath"
- yaml "gopkg.in/yaml.v2"
- "gogs.carducci-dante.gov.it/andrea.fazzi/karmen/config"
- "gogs.carducci-dante.gov.it/andrea.fazzi/karmen/renderer"
- )
- type configYaml struct {
- Name string `yaml:"name"`
- }
- type Document struct {
- Config configYaml
- ConfigFile []byte
- TemplateFile []byte
- }
- func getDocumentsFromFS() []Document {
- documents := make([]Document, 0)
- err := filepath.Walk(config.DocumentRootDir, func(path string, f os.FileInfo, err error) error {
- if !f.IsDir() {
- if f.Name() == config.DocumentConfigFn {
- document := Document{}
- document.ConfigFile, err = ioutil.ReadFile(path)
- if err != nil {
- panic(err)
- }
- err = yaml.Unmarshal(document.ConfigFile, &document.Config)
- documents = append(documents, document)
- }
- }
- return nil
- })
- if err != nil {
- panic(err)
- }
- return documents
- }
- func documentsHandler() http.Handler {
- fn := func(w http.ResponseWriter, r *http.Request) {
- var data struct {
- Documents []Document
- }
- data.Documents = getDocumentsFromFS()
- // if err := orm.DB().Preload("Classes").Preload("Subjects").Find(&data.Teachers).Error; err != nil {
- // panic(err)
- // }
- // sort.Slice(data.Teachers, func(i, j int) bool {
- // return strings.ToLower(data.Teachers[i].Surname) < strings.ToLower(data.Teachers[j].Surname)
- // })
- if err := renderer.Render(w, "base", "documents", data); err != nil {
- panic(err)
- }
- }
- return http.HandlerFunc(fn)
- }
|