updates! settings!
This commit is contained in:
81
settings/settings.go
Normal file
81
settings/settings.go
Normal file
@@ -0,0 +1,81 @@
|
||||
package settings
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"os"
|
||||
|
||||
"github.com/hacdias/caddy-hugo/page"
|
||||
"github.com/spf13/hugo/parser"
|
||||
)
|
||||
|
||||
// Execute the page
|
||||
func Execute(w http.ResponseWriter, r *http.Request) (int, error) {
|
||||
if r.Method == "POST" {
|
||||
|
||||
} else {
|
||||
frontmatter := getConfigFrontMatter()
|
||||
|
||||
// 500 if the format of frontmatter can't be defined
|
||||
if frontmatter == "" {
|
||||
return 500, nil
|
||||
}
|
||||
|
||||
config, err := getConfig(frontmatter)
|
||||
|
||||
if err != nil {
|
||||
return 500, err
|
||||
}
|
||||
|
||||
page := new(page.Page)
|
||||
page.Title = "settings"
|
||||
page.Body = config
|
||||
return page.Render("settings", w)
|
||||
}
|
||||
|
||||
return 200, nil
|
||||
}
|
||||
|
||||
func getConfigFrontMatter() string {
|
||||
var frontmatter string
|
||||
|
||||
if _, err := os.Stat("config.yaml"); err == nil {
|
||||
frontmatter = "yaml"
|
||||
}
|
||||
|
||||
if _, err := os.Stat("config.json"); err == nil {
|
||||
frontmatter = "json"
|
||||
}
|
||||
|
||||
if _, err := os.Stat("config.toml"); err == nil {
|
||||
frontmatter = "toml"
|
||||
}
|
||||
|
||||
return frontmatter
|
||||
}
|
||||
|
||||
func getConfig(frontmatter string) (interface{}, error) {
|
||||
content := getConfigFileContent(frontmatter)
|
||||
|
||||
switch frontmatter {
|
||||
case "yaml":
|
||||
return parser.HandleYAMLMetaData(content)
|
||||
case "json":
|
||||
return parser.HandleJSONMetaData(content)
|
||||
case "toml":
|
||||
return parser.HandleTOMLMetaData(content)
|
||||
}
|
||||
|
||||
return []string{}, nil
|
||||
}
|
||||
|
||||
func getConfigFileContent(frontmatter string) []byte {
|
||||
file, err := ioutil.ReadFile("config." + frontmatter)
|
||||
|
||||
if err != nil {
|
||||
// there were a problem opening the file
|
||||
return []byte{}
|
||||
}
|
||||
|
||||
return file
|
||||
}
|
||||
Reference in New Issue
Block a user