57 lines
1.2 KiB
Go
57 lines
1.2 KiB
Go
package gtm
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"net/http"
|
|
"text/template"
|
|
|
|
"github.com/pocketbase/pocketbase"
|
|
"github.com/pocketbase/pocketbase/core"
|
|
"github.com/pocketbase/pocketbase/tools/router"
|
|
)
|
|
|
|
func ServeTagMangerJS(app *pocketbase.PocketBase, se *core.ServeEvent) *router.Route[*core.RequestEvent] {
|
|
return se.Router.GET("/api/gtm/script.js", func(e *core.RequestEvent) error {
|
|
|
|
settings, err := GetSettings(app)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
file, err := JS.ReadFile("gtm.js")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
templ, err := template.New("test").Parse(string(file))
|
|
|
|
buf := bytes.Buffer{}
|
|
templ.Execute(&buf, map[string]interface{}{
|
|
"GtagID": settings.GtagID,
|
|
})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
e.Response.Header().Set("Content-Type", "application/javascript")
|
|
return e.String(http.StatusOK, buf.String())
|
|
})
|
|
}
|
|
|
|
type GTagSettings struct {
|
|
GtagID string `json:"gtagID"`
|
|
}
|
|
|
|
func GetSettings(app *pocketbase.PocketBase) (*GTagSettings, error) {
|
|
record, err := app.FindFirstRecordByFilter("settings", "key='gtagID'", nil)
|
|
|
|
settings := GTagSettings{}
|
|
json.Unmarshal([]byte(record.GetString("value")), &settings)
|
|
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &settings, nil
|
|
}
|