This commit is contained in:
+27
-20
@@ -2,7 +2,6 @@ package actions
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"io"
|
||||
"log"
|
||||
"maps"
|
||||
"regexp"
|
||||
@@ -18,29 +17,42 @@ type TemplateParameters struct {
|
||||
Keys map[string]string
|
||||
}
|
||||
|
||||
func Template(r *TemplateParameters) ([]byte, error) {
|
||||
mapkeys := slices.Collect(maps.Keys(r.Keys))
|
||||
ok, err := verifyTemplate(r.Id, mapkeys)
|
||||
func Template(r *TemplateParameters) ([][]byte, error) {
|
||||
|
||||
data, err := database.GetSpecificSVG(r.Id)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
mapkeys := slices.Collect(maps.Keys(r.Keys))
|
||||
ok, err := verifyTemplate(data, mapkeys)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if !ok {
|
||||
return nil, errors.New("Template does not exist.")
|
||||
}
|
||||
log.Printf("Replacing keys of %s template\n", r.Id)
|
||||
|
||||
reader, err := svg.Storage.Get(r.Id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
pagesdata := make([][]byte, len(data.Pages))
|
||||
|
||||
for _, page := range data.Pages {
|
||||
pagedata, err := GetPage(page.TemplateId, page.Page)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
replaceAll(&pagedata, r.Keys)
|
||||
pagesdata[page.Page-1] = pagedata
|
||||
log.Printf("Finished replacing keys of %s page %d\n", r.Id, page.Page)
|
||||
|
||||
}
|
||||
defer reader.Close()
|
||||
svgblob, err := io.ReadAll(reader)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
replaceAll(&svgblob, r.Keys)
|
||||
log.Printf("Finished replacing keys of %s template\n", r.Id)
|
||||
return svgblob, nil
|
||||
return pagesdata, nil
|
||||
}
|
||||
|
||||
func replaceAll(svgblob *[]byte, keys map[string]string) {
|
||||
@@ -51,12 +63,7 @@ func replaceAll(svgblob *[]byte, keys map[string]string) {
|
||||
}))
|
||||
}
|
||||
|
||||
func verifyTemplate(id string, keys []string) (bool, error) {
|
||||
data, err := database.GetSpecificSVG(id)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
func verifyTemplate(data svg.TemplateData, keys []string) (bool, error) {
|
||||
for _, key := range data.AllKeys() {
|
||||
if !slices.Contains(keys, key) {
|
||||
return false, nil
|
||||
|
||||
Reference in New Issue
Block a user