new request: item map - this one is useful for switching languages

This commit is contained in:
Jan Halfar 2013-09-18 09:43:57 +02:00
parent 09e331075a
commit 07d6a3d325
5 changed files with 39 additions and 1 deletions

Binary file not shown.

View File

@ -11,6 +11,7 @@ type Node struct {
func NewNode() *Node {
node := new(Node)
node.Item = NewItem()
//node.Index = []
node.Nodes = make(map[string]*Node)
return node
}

View File

@ -53,6 +53,22 @@ func (repo *Repo) ResolveContent(URI string) (resolved bool, resolvedURI string,
return
}
func (repo *Repo) GetItemMap(id string) map[string]map[string]*content.Item {
itemMap := make(map[string]map[string]*content.Item)
if repoNode, ok := repo.Directory[id]; ok {
for region, languageURIs := range repoNode.URIs {
itemMap[region] = make(map[string]*content.Item)
for language, URI := range languageURIs {
log.Debug(fmt.Sprintf("region :%s language :%s URI: %s", region, language, URI))
itemMap[region][language] = repoNode.ToItem(region, language)
}
}
} else {
log.Warning("GetItemMapForAllRegionsAndLanguages invalid id " + id)
}
return itemMap
}
func (repo *Repo) GetURIs(region string, language string, ids []string) map[string]string {
uris := make(map[string]string)
for _, id := range ids {
@ -109,7 +125,12 @@ func (repo *Repo) GetContent(r *requests.Content) *content.SiteContent {
c.Data = node.Data
for treeName, treeRequest := range r.Nodes {
log.Debug(" adding tree " + treeName + " " + treeRequest.Id)
c.Nodes[treeName] = repo.GetNode(repo.Directory[treeRequest.Id], treeRequest.Expand, treeRequest.MimeTypes, c.Path, region, language)
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)

View File

@ -0,0 +1,9 @@
package requests
type ItemMap struct {
Id string `json:"id"`
}
func NewItemMap() *ItemMap {
return new(ItemMap)
}

View File

@ -42,6 +42,13 @@ func handleSocketRequest(handler string, jsonBuffer []byte) (replyBytes []byte,
content := contentRepo.GetContent(contentRequest)
reply = content
break
case "getItemMap":
itemMapRequest := requests.NewItemMap()
jsonErr = json.Unmarshal(jsonBuffer, &itemMapRequest)
log.Debug(" itemMapRequest: " + fmt.Sprint(itemMapRequest))
itemMap := contentRepo.GetItemMap(itemMapRequest.Id)
reply = itemMap
break
default:
err = errors.New(log.Error(" can not handle this one " + handler))
}