mirror of
https://github.com/JustKato/FreePad.git
synced 2026-02-23 15:50:46 +02:00
+ Handle post data
This commit is contained in:
@@ -6,8 +6,9 @@ import (
|
||||
)
|
||||
|
||||
type Post struct {
|
||||
Name string `json:"name"`
|
||||
Content string `json:"content"`
|
||||
Name string `json:"name"`
|
||||
LastModified string `json:"last_modified"`
|
||||
Content string `json:"content"`
|
||||
}
|
||||
|
||||
func getStorageDirectory() string {
|
||||
@@ -39,16 +40,14 @@ func GetPost(fileName string) Post {
|
||||
// Generate the file path
|
||||
filePath := fmt.Sprintf("%s%s", storageDir, fileName)
|
||||
|
||||
fmt.Println("Reading: ", filePath)
|
||||
|
||||
p := Post{
|
||||
Name: fileName,
|
||||
Content: "",
|
||||
Name: fileName,
|
||||
Content: "",
|
||||
LastModified: "Never Before",
|
||||
}
|
||||
|
||||
// Check if the file exits
|
||||
if _, err := os.Stat(filePath); !os.IsNotExist(err) {
|
||||
fmt.Println("Found ", filePath)
|
||||
// File does exist, read it and set the content
|
||||
data, err := os.ReadFile(filePath)
|
||||
if err != nil {
|
||||
@@ -57,7 +56,14 @@ func GetPost(fileName string) Post {
|
||||
|
||||
// Get the content of the file and put it in the response
|
||||
p.Content = string(data)
|
||||
fmt.Println("Loaded content for ", filePath)
|
||||
|
||||
// Get last modified date
|
||||
fileData, err := os.Stat(filePath)
|
||||
if err == nil {
|
||||
p.LastModified = fileData.ModTime().Format("02/01/2006 03:04:05 PM")
|
||||
} else {
|
||||
fmt.Println(err)
|
||||
}
|
||||
}
|
||||
|
||||
return p
|
||||
@@ -65,5 +71,26 @@ func GetPost(fileName string) Post {
|
||||
|
||||
func WritePost(p Post) error {
|
||||
|
||||
// Get the base storage directory and make sure it exists
|
||||
storageDir := getStorageDirectory()
|
||||
|
||||
// Generate the file path
|
||||
filePath := fmt.Sprintf("%s%s", storageDir, p.Name)
|
||||
|
||||
f, err := os.OpenFile(filePath, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0755)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Write the contnets
|
||||
_, err = f.WriteString(p.Content)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := f.Close(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package routes
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/url"
|
||||
"time"
|
||||
|
||||
"github.com/JustKato/FreePad/lib/helper"
|
||||
"github.com/JustKato/FreePad/lib/objects"
|
||||
@@ -23,7 +23,27 @@ func HomeRoutes(router *gin.Engine) {
|
||||
// Get the post we are looking for.
|
||||
postName := c.Param("post")
|
||||
|
||||
fmt.Println("Sanitizing ", postName)
|
||||
// Sanitize the postName
|
||||
newPostName, err := url.QueryUnescape(postName)
|
||||
if err == nil {
|
||||
postName = newPostName
|
||||
}
|
||||
postName = sanitize.AlphaNumeric(postName, true)
|
||||
|
||||
post := objects.GetPost(postName)
|
||||
|
||||
c.HTML(200, "page.html", gin.H{
|
||||
"title": postName,
|
||||
"post_content": post.Content,
|
||||
"last_modified": post.LastModified,
|
||||
"domain_base": helper.GetDomainBase(),
|
||||
})
|
||||
})
|
||||
|
||||
router.POST("/:post", func(c *gin.Context) {
|
||||
// Get the post we are looking for.
|
||||
postName := c.Param("post")
|
||||
postContent := c.PostForm("content")
|
||||
|
||||
// Sanitize the postName
|
||||
newPostName, err := url.QueryUnescape(postName)
|
||||
@@ -32,14 +52,26 @@ func HomeRoutes(router *gin.Engine) {
|
||||
}
|
||||
postName = sanitize.AlphaNumeric(postName, true)
|
||||
|
||||
fmt.Println("Fetching ", postName)
|
||||
p := objects.Post{
|
||||
Name: postName,
|
||||
Content: postContent,
|
||||
LastModified: time.Now().Format("02/01/2006 03:04:05 PM"),
|
||||
}
|
||||
|
||||
post := objects.GetPost(postName)
|
||||
// Write the post
|
||||
err = objects.WritePost(p)
|
||||
if err != nil {
|
||||
c.JSON(400, gin.H{
|
||||
"error": err,
|
||||
})
|
||||
|
||||
c.HTML(200, "page.html", gin.H{
|
||||
"title": postName,
|
||||
"post_content": post.Content,
|
||||
"domain_base": helper.GetDomainBase(),
|
||||
// End
|
||||
return
|
||||
}
|
||||
|
||||
// Return the success message
|
||||
c.JSON(200, gin.H{
|
||||
"pad": p,
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user