1
0
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:
2022-05-20 01:40:21 +03:00
parent a76b9d02ba
commit 051a8a311c
8 changed files with 154 additions and 27 deletions

View File

@@ -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
}

View File

@@ -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,
})
})