mirror of
https://github.com/foomo/contentserver.git
synced 2025-10-16 12:25:44 +00:00
getting some actual functionality done - handling content
This commit is contained in:
parent
ede9ba6d52
commit
35753df237
@ -18,6 +18,7 @@ type RepoNode struct {
|
|||||||
Content map[string]interface{} `json:"content"`
|
Content map[string]interface{} `json:"content"`
|
||||||
Nodes map[string]*RepoNode `json:"nodes"`
|
Nodes map[string]*RepoNode `json:"nodes"`
|
||||||
LinkIds map[string]map[string]string `json:"linkIds"` // ids to link to
|
LinkIds map[string]map[string]string `json:"linkIds"` // ids to link to
|
||||||
|
parent *RepoNode
|
||||||
// published from - to
|
// published from - to
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -36,6 +37,35 @@ func (node *RepoNode) GetLanguageAndRegionForURI(URI string) (resolved bool, reg
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (node *RepoNode) WireParents() {
|
||||||
|
for _, childNode := range node.Nodes {
|
||||||
|
childNode.parent = node
|
||||||
|
childNode.WireParents()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (node *RepoNode) GetPath(region string, language string) map[string]*Item {
|
||||||
|
path := make(map[string]*Item)
|
||||||
|
parentNode := node.parent
|
||||||
|
for parentNode != nil {
|
||||||
|
path[parentNode.Id] = parentNode.ToItem(region, language)
|
||||||
|
parentNode = parentNode.parent
|
||||||
|
}
|
||||||
|
return path
|
||||||
|
}
|
||||||
|
|
||||||
|
func (node *RepoNode) ToItem(region string, language string) *Item {
|
||||||
|
item := NewItem()
|
||||||
|
item.Id = node.Id
|
||||||
|
item.Name = node.GetName(language)
|
||||||
|
item.URI = node.URIs[region][language]
|
||||||
|
return item
|
||||||
|
}
|
||||||
|
|
||||||
|
func (node *RepoNode) GetParent() *RepoNode {
|
||||||
|
return node.parent
|
||||||
|
}
|
||||||
|
|
||||||
func (node *RepoNode) AddNode(name string, childNode *RepoNode) *RepoNode {
|
func (node *RepoNode) AddNode(name string, childNode *RepoNode) *RepoNode {
|
||||||
node.Nodes[name] = childNode
|
node.Nodes[name] = childNode
|
||||||
return node
|
return node
|
||||||
|
|||||||
@ -10,10 +10,9 @@ type SiteContent struct {
|
|||||||
Status int `json:"status"`
|
Status int `json:"status"`
|
||||||
Region string `json:"region"`
|
Region string `json:"region"`
|
||||||
Language string `json:"language"`
|
Language string `json:"language"`
|
||||||
Content struct {
|
|
||||||
Item *Item `json:"item"`
|
Item *Item `json:"item"`
|
||||||
Data interface{} `json:"data"`
|
Data interface{} `json:"data"`
|
||||||
} `json:"content"`
|
Path map[string]*Item `json:"path"`
|
||||||
URIs map[string]string `json:"URIs"`
|
URIs map[string]string `json:"URIs"`
|
||||||
Nodes map[string]*Node `json:"nodes"`
|
Nodes map[string]*Node `json:"nodes"`
|
||||||
}
|
}
|
||||||
|
|||||||
@ -23,14 +23,10 @@ func NewRepo(server string) *Repo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (repo *Repo) ResolveContent(URI string) (resolved bool, region string, language string, repoNode *content.RepoNode) {
|
func (repo *Repo) ResolveContent(URI string) (resolved bool, region string, language string, repoNode *content.RepoNode) {
|
||||||
if node, ok := repo.URIDirectory[URI]; ok {
|
if repoNode, ok := repo.URIDirectory[URI]; ok {
|
||||||
resolved = true
|
resolved = true
|
||||||
resolvedURI, region, language := node.GetLanguageAndRegionForURI(URI)
|
_, region, language := repoNode.GetLanguageAndRegionForURI(URI)
|
||||||
if resolvedURI {
|
return true, region, language, repoNode
|
||||||
return true, region, language, node
|
|
||||||
} else {
|
|
||||||
resolved = false
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
resolved = false
|
resolved = false
|
||||||
}
|
}
|
||||||
@ -53,9 +49,7 @@ func (repo *Repo) GetURI(region string, language string, id string) string {
|
|||||||
|
|
||||||
func (repo *Repo) GetNode(repoNode *content.RepoNode, expanded bool, mimeTypes []string, path []string, region string, language string) *content.Node {
|
func (repo *Repo) GetNode(repoNode *content.RepoNode, expanded bool, mimeTypes []string, path []string, region string, language string) *content.Node {
|
||||||
node := content.NewNode()
|
node := content.NewNode()
|
||||||
node.Item.Name = repoNode.GetName(language)
|
node.Item = repoNode.ToItem(region, language)
|
||||||
node.Item.URI = repoNode.URIs[region][language]
|
|
||||||
//fmt.Println(region, language, repoNode.URIs[region][language], repoNode.URIs)
|
|
||||||
for id, childNode := range repoNode.Nodes {
|
for id, childNode := range repoNode.Nodes {
|
||||||
if expanded && !childNode.Hidden && childNode.IsOneOfTheseMimeTypes(mimeTypes) {
|
if expanded && !childNode.Hidden && childNode.IsOneOfTheseMimeTypes(mimeTypes) {
|
||||||
// || in path and in region mimes
|
// || in path and in region mimes
|
||||||
@ -73,9 +67,8 @@ func (repo *Repo) GetContent(r *requests.Content) *content.SiteContent {
|
|||||||
c.Region = region
|
c.Region = region
|
||||||
c.Language = language
|
c.Language = language
|
||||||
c.Status = content.STATUS_OK
|
c.Status = content.STATUS_OK
|
||||||
c.Content.Item = content.NewItem()
|
c.Item = node.ToItem(region, language)
|
||||||
c.Content.Item.Id = node.Id
|
c.Path = node.GetPath(region, language)
|
||||||
c.Content.Item.Name = node.GetName(language)
|
|
||||||
for treeName, treeRequest := range r.Nodes {
|
for treeName, treeRequest := range r.Nodes {
|
||||||
// fmt.Println("getting tree", treeName, treeRequest)
|
// fmt.Println("getting tree", treeName, treeRequest)
|
||||||
c.Nodes[treeName] = repo.GetNode(repo.Directory[treeRequest.Id], treeRequest.Expand, treeRequest.MimeTypes, []string{}, region, language)
|
c.Nodes[treeName] = repo.GetNode(repo.Directory[treeRequest.Id], treeRequest.Expand, treeRequest.MimeTypes, []string{}, region, language)
|
||||||
@ -102,6 +95,7 @@ func (repo *Repo) builDirectory(dirNode *content.RepoNode) {
|
|||||||
func (repo *Repo) Update() {
|
func (repo *Repo) Update() {
|
||||||
repo.Node = content.NewRepoNode()
|
repo.Node = content.NewRepoNode()
|
||||||
utils.Get(repo.server, repo.Node)
|
utils.Get(repo.server, repo.Node)
|
||||||
|
repo.Node.WireParents()
|
||||||
repo.Directory = make(map[string]*content.RepoNode)
|
repo.Directory = make(map[string]*content.RepoNode)
|
||||||
repo.URIDirectory = make(map[string]*content.RepoNode)
|
repo.URIDirectory = make(map[string]*content.RepoNode)
|
||||||
repo.builDirectory(repo.Node)
|
repo.builDirectory(repo.Node)
|
||||||
|
|||||||
@ -20,13 +20,11 @@ func contentHandler(w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
func uriHandler(w http.ResponseWriter, r *http.Request) {
|
func uriHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
parts := strings.Split(r.RequestURI, "/")
|
parts := strings.Split(r.RequestURI, "/")
|
||||||
//fmt.Println(parts, len(parts))
|
|
||||||
if len(parts) == 5 {
|
if len(parts) == 5 {
|
||||||
utils.JsonResponse(w, contentRepo.GetURI(parts[2], parts[3], parts[4]))
|
utils.JsonResponse(w, contentRepo.GetURI(parts[2], parts[3], parts[4]))
|
||||||
} else {
|
} else {
|
||||||
wtfHandler(w, r)
|
wtfHandler(w, r)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func wtfHandler(w http.ResponseWriter, r *http.Request) {
|
func wtfHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|||||||
@ -20,7 +20,7 @@ func toJson(obj interface{}) string {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func extractJsonFromRequest(r *http.Request) []byte {
|
func extractJsonFromRequestFileUpload(r *http.Request) []byte {
|
||||||
file, _, err := r.FormFile("request")
|
file, _, err := r.FormFile("request")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err, r)
|
fmt.Println(err, r)
|
||||||
@ -31,6 +31,11 @@ func extractJsonFromRequest(r *http.Request) []byte {
|
|||||||
}
|
}
|
||||||
return data
|
return data
|
||||||
}
|
}
|
||||||
|
func extractJsonFromRequest(r *http.Request) []byte {
|
||||||
|
|
||||||
|
bytes := []byte(r.PostFormValue("request"))
|
||||||
|
return bytes
|
||||||
|
}
|
||||||
|
|
||||||
func PopulateRequest(r *http.Request, obj interface{}) {
|
func PopulateRequest(r *http.Request, obj interface{}) {
|
||||||
json.Unmarshal(extractJsonFromRequest(r), obj)
|
json.Unmarshal(extractJsonFromRequest(r), obj)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user