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 {
|
func log(msg string, level int) string {
|
||||||
if level <= logLevel {
|
if level <= logLevel {
|
||||||
prefix := time.Now().Format(time.RFC3339) + " " + prefices[level]
|
prefix := time.Now().Format(time.RFC3339Nano) + " " + prefices[level]
|
||||||
lines := strings.Split(msg, "\n")
|
lines := strings.Split(msg, "\n")
|
||||||
for i := 0; i < len(lines); i++ {
|
for i := 0; i < len(lines); i++ {
|
||||||
fmt.Println(prefix + lines[i])
|
fmt.Println(prefix + lines[i])
|
||||||
|
|||||||
@ -91,14 +91,14 @@ func (repo *Repo) GetURI(region string, language string, id string) string {
|
|||||||
return ""
|
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 := content.NewNode()
|
||||||
node.Item = repoNode.ToItem(region, language)
|
node.Item = repoNode.ToItem(region, language)
|
||||||
log.Debug("repo.GetNode: " + repoNode.Id)
|
log.Debug("repo.GetNode: " + repoNode.Id)
|
||||||
for _, childId := range repoNode.Index {
|
for _, childId := range repoNode.Index {
|
||||||
childNode := repoNode.Nodes[childId]
|
childNode := repoNode.Nodes[childId]
|
||||||
if (expanded || !expanded && childNode.InPath(path)) && !childNode.Hidden && childNode.IsOneOfTheseMimeTypes(mimeTypes) && childNode.InRegion(region) {
|
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, region, language)
|
node.Nodes[childId] = repo.GetNode(childNode, expanded, mimeTypes, path, level+1, region, language)
|
||||||
node.Index = append(node.Index, childId)
|
node.Index = append(node.Index, childId)
|
||||||
} else {
|
} else {
|
||||||
fmt.Println("no see for", childNode.GetName(language), childNode.Hidden)
|
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
|
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 {
|
func (repo *Repo) GetContent(r *requests.Content) *content.SiteContent {
|
||||||
log.Debug("repo.GetContent: " + r.URI)
|
log.Debug("repo.GetContent: " + r.URI)
|
||||||
c := content.NewSiteContent()
|
c := content.NewSiteContent()
|
||||||
@ -123,18 +137,19 @@ func (repo *Repo) GetContent(r *requests.Content) *content.SiteContent {
|
|||||||
c.Item = node.ToItem(region, language)
|
c.Item = node.ToItem(region, language)
|
||||||
c.Path = node.GetPath(region, language)
|
c.Path = node.GetPath(region, language)
|
||||||
c.Data = node.Data
|
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 {
|
} else {
|
||||||
log.Notice("404 for " + r.URI)
|
log.Notice("404 for " + r.URI)
|
||||||
c.Status = content.STATUS_NOT_FOUND
|
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
|
return c
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,16 +1,9 @@
|
|||||||
package requests
|
package requests
|
||||||
|
|
||||||
type Content struct {
|
type Content struct {
|
||||||
Env struct {
|
Env *Env `json:"env"`
|
||||||
Groups []string `json:"groups"`
|
|
||||||
Data interface{} `json:"data"`
|
|
||||||
} `json:"env"`
|
|
||||||
URI string
|
URI string
|
||||||
Nodes map[string]struct {
|
Nodes map[string]*Node `json:"nodes"`
|
||||||
Id string `json:"id"`
|
|
||||||
MimeTypes []string `json:"mimeTypes"`
|
|
||||||
Expand bool `json:"expand"`
|
|
||||||
} `json:"nodes"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewContent() *Content {
|
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)
|
itemMap := contentRepo.GetItemMap(itemMapRequest.Id)
|
||||||
reply = itemMap
|
reply = itemMap
|
||||||
break
|
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:
|
default:
|
||||||
err = errors.New(log.Error(" can not handle this one " + handler))
|
err = errors.New(log.Error(" can not handle this one " + handler))
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user