mirror of
https://github.com/foomo/contentserver.git
synced 2025-10-16 12:25:44 +00:00
added nodes request, refactored structs, improved behaviour
This commit is contained in:
parent
07d6a3d325
commit
4815a73db8
BIN
ContentServer
BIN
ContentServer
Binary file not shown.
@ -49,7 +49,7 @@ func GetLogLevelByName(name string) int {
|
||||
|
||||
func log(msg string, level int) string {
|
||||
if level <= logLevel {
|
||||
prefix := time.Now().Format(time.RFC3339) + " " + prefices[level]
|
||||
prefix := time.Now().Format(time.RFC3339Nano) + " " + prefices[level]
|
||||
lines := strings.Split(msg, "\n")
|
||||
for i := 0; i < len(lines); i++ {
|
||||
fmt.Println(prefix + lines[i])
|
||||
|
||||
@ -91,14 +91,14 @@ func (repo *Repo) GetURI(region string, language string, id string) string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (repo *Repo) GetNode(repoNode *content.RepoNode, expanded bool, mimeTypes []string, path []*content.Item, region string, language string) *content.Node {
|
||||
func (repo *Repo) GetNode(repoNode *content.RepoNode, expanded bool, mimeTypes []string, path []*content.Item, level int, region string, language string) *content.Node {
|
||||
node := content.NewNode()
|
||||
node.Item = repoNode.ToItem(region, language)
|
||||
log.Debug("repo.GetNode: " + repoNode.Id)
|
||||
for _, childId := range repoNode.Index {
|
||||
childNode := repoNode.Nodes[childId]
|
||||
if (expanded || !expanded && childNode.InPath(path)) && !childNode.Hidden && childNode.IsOneOfTheseMimeTypes(mimeTypes) && childNode.InRegion(region) {
|
||||
node.Nodes[childId] = repo.GetNode(childNode, expanded, mimeTypes, path, region, language)
|
||||
if (level == 0 || expanded || !expanded && childNode.InPath(path)) && !childNode.Hidden && childNode.IsOneOfTheseMimeTypes(mimeTypes) && childNode.InRegion(region) {
|
||||
node.Nodes[childId] = repo.GetNode(childNode, expanded, mimeTypes, path, level+1, region, language)
|
||||
node.Index = append(node.Index, childId)
|
||||
} else {
|
||||
fmt.Println("no see for", childNode.GetName(language), childNode.Hidden)
|
||||
@ -108,6 +108,20 @@ func (repo *Repo) GetNode(repoNode *content.RepoNode, expanded bool, mimeTypes [
|
||||
return node
|
||||
}
|
||||
|
||||
func (repo *Repo) GetNodes(r *requests.Nodes) map[string]*content.Node {
|
||||
nodes := make(map[string]*content.Node)
|
||||
path := make([]*content.Item, 0)
|
||||
for nodeName, nodeRequest := range r.Nodes {
|
||||
log.Debug(" adding node " + nodeName + " " + nodeRequest.Id)
|
||||
if treeNode, ok := repo.Directory[nodeRequest.Id]; ok {
|
||||
nodes[nodeName] = repo.GetNode(treeNode, nodeRequest.Expand, nodeRequest.MimeTypes, path, 0, r.Env.Defaults.Region, r.Env.Defaults.Language)
|
||||
} else {
|
||||
log.Warning("you are requesting an invalid tree node for " + nodeName + " : " + nodeRequest.Id)
|
||||
}
|
||||
}
|
||||
return nodes
|
||||
}
|
||||
|
||||
func (repo *Repo) GetContent(r *requests.Content) *content.SiteContent {
|
||||
log.Debug("repo.GetContent: " + r.URI)
|
||||
c := content.NewSiteContent()
|
||||
@ -123,18 +137,19 @@ func (repo *Repo) GetContent(r *requests.Content) *content.SiteContent {
|
||||
c.Item = node.ToItem(region, language)
|
||||
c.Path = node.GetPath(region, language)
|
||||
c.Data = node.Data
|
||||
for treeName, treeRequest := range r.Nodes {
|
||||
log.Debug(" adding tree " + treeName + " " + treeRequest.Id)
|
||||
if treeNode, ok := repo.Directory[treeRequest.Id]; ok {
|
||||
c.Nodes[treeName] = repo.GetNode(treeNode, treeRequest.Expand, treeRequest.MimeTypes, c.Path, region, language)
|
||||
} else {
|
||||
log.Warning("you are requesting an invalid tree node for " + treeName + " : " + treeRequest.Id)
|
||||
}
|
||||
|
||||
}
|
||||
} else {
|
||||
log.Notice("404 for " + r.URI)
|
||||
c.Status = content.STATUS_NOT_FOUND
|
||||
region = r.Env.Defaults.Region
|
||||
language = r.Env.Defaults.Language
|
||||
}
|
||||
for treeName, treeRequest := range r.Nodes {
|
||||
log.Debug(" adding tree " + treeName + " " + treeRequest.Id)
|
||||
if treeNode, ok := repo.Directory[treeRequest.Id]; ok {
|
||||
c.Nodes[treeName] = repo.GetNode(treeNode, treeRequest.Expand, treeRequest.MimeTypes, c.Path, 0, region, language)
|
||||
} else {
|
||||
log.Warning("you are requesting an invalid tree node for " + treeName + " : " + treeRequest.Id)
|
||||
}
|
||||
}
|
||||
return c
|
||||
}
|
||||
|
||||
@ -1,16 +1,9 @@
|
||||
package requests
|
||||
|
||||
type Content struct {
|
||||
Env struct {
|
||||
Groups []string `json:"groups"`
|
||||
Data interface{} `json:"data"`
|
||||
} `json:"env"`
|
||||
Env *Env `json:"env"`
|
||||
URI string
|
||||
Nodes map[string]struct {
|
||||
Id string `json:"id"`
|
||||
MimeTypes []string `json:"mimeTypes"`
|
||||
Expand bool `json:"expand"`
|
||||
} `json:"nodes"`
|
||||
Nodes map[string]*Node `json:"nodes"`
|
||||
}
|
||||
|
||||
func NewContent() *Content {
|
||||
|
||||
10
server/requests/nodes.go
Normal file
10
server/requests/nodes.go
Normal file
@ -0,0 +1,10 @@
|
||||
package requests
|
||||
|
||||
type Nodes struct {
|
||||
Nodes map[string]*Node `json:"nodes"`
|
||||
Env *Env `json:"env"`
|
||||
}
|
||||
|
||||
func NewNodes() *Nodes {
|
||||
return new(Nodes)
|
||||
}
|
||||
16
server/requests/requests.go
Normal file
16
server/requests/requests.go
Normal file
@ -0,0 +1,16 @@
|
||||
package requests
|
||||
|
||||
type Env struct {
|
||||
Defaults struct {
|
||||
Region string `json:"region"`
|
||||
Language string `json:"language"`
|
||||
} `json:"defaults"`
|
||||
Groups []string `json:"groups"`
|
||||
Data interface{} `json:"data"`
|
||||
}
|
||||
|
||||
type Node struct {
|
||||
Id string `json:"id"`
|
||||
MimeTypes []string `json:"mimeTypes"`
|
||||
Expand bool `json:"expand"`
|
||||
}
|
||||
@ -49,6 +49,14 @@ func handleSocketRequest(handler string, jsonBuffer []byte) (replyBytes []byte,
|
||||
itemMap := contentRepo.GetItemMap(itemMapRequest.Id)
|
||||
reply = itemMap
|
||||
break
|
||||
case "getNodes":
|
||||
nodesRequest := requests.NewNodes()
|
||||
jsonErr = json.Unmarshal(jsonBuffer, &nodesRequest)
|
||||
log.Debug(" nodesRequest: " + fmt.Sprint(nodesRequest))
|
||||
nodesMap := contentRepo.GetNodes(nodesRequest)
|
||||
reply = nodesMap
|
||||
break
|
||||
|
||||
default:
|
||||
err = errors.New(log.Error(" can not handle this one " + handler))
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user