neoscontentrepository/exporter/utils.go
Frederik Löffert 21e9ffeee8 initial commit
2019-01-07 13:52:53 +01:00

69 lines
1.8 KiB
Go

package exporter
import (
"encoding/json"
"time"
"github.com/foomo/contentserver/content"
"github.com/foomo/neoscontentrepository/model"
)
const RepoNodeDefaultLayout = "default"
func createRepoNode(node *model.NodeData) (repoNode *content.RepoNode, properties map[string]interface{}, err error) {
var errProperties error
properties, errProperties = parseProperties(node.Properties)
repoNode = content.NewRepoNode()
now := time.Now()
// set base data
repoNode.ID = node.Identifier
repoNode.MimeType = MimeTypePage
repoNode.Data["createdAt"] = node.CreationDatetime.Unix()
repoNode.Data["updatedAt"] = node.LastModificationDatetime.Unix()
repoNode.Hidden = node.HiddenInIndex || node.Hidden ||
(node.HiddenBeforeDatetime != nil && node.HiddenBeforeDatetime.Unix() > 0 && now.Unix() < node.HiddenBeforeDatetime.Unix()) ||
(node.HiddenAfterDatetime != nil && node.HiddenAfterDatetime.Unix() > 0 && now.Unix() > node.HiddenAfterDatetime.Unix())
// add localized properties
// $this->URI = $this->getNodeUri($node);
// handle property errors
if errProperties != nil {
err = errProperties
return
}
// node name
repoNode.Name = GetPropertyString("title", properties)
// layout
repoNode.Data["layout"] = RepoNodeDefaultLayout
layout := GetPropertyString("layout", properties)
if layout != "" {
repoNode.Data["layout"] = layout
}
return
}
// GetPropertyString will return properties value for given key or an empty string
func GetPropertyString(key string, properties map[string]interface{}) string {
if value, ok := properties[key]; ok {
return value.(string)
}
return ""
}
func parseProperties(props string) (properties map[string]interface{}, err error) {
errUnmarshall := json.Unmarshal([]byte(props), &properties)
if errUnmarshall != nil {
err = errUnmarshall
return
}
return
}