diff options
author | Matt Arnold <matt@thegnuguru.org> | 2023-07-11 19:17:32 -0400 |
---|---|---|
committer | Matt Arnold <matt@thegnuguru.org> | 2023-07-11 19:17:32 -0400 |
commit | b6e5f0c7b76950a29f7ffef3a6ceae951dbd02a4 (patch) | |
tree | bb889d46ee7fdef0c6eec01f055c166109b59a6a | |
parent | f83e2af8ad232a744d708295f919e3df457960c1 (diff) |
Restructure
-rw-r--r-- | activitypub.go | 4 | ||||
-rw-r--r-- | blog-backend.log | 0 | ||||
-rw-r--r-- | cmd/setupdb/main.go | 46 | ||||
-rw-r--r-- | config.go | 5 | ||||
-rw-r--r-- | main.go | 43 | ||||
-rw-r--r-- | utils/utils.go (renamed from utils.go) | 18 |
6 files changed, 81 insertions, 35 deletions
diff --git a/activitypub.go b/activitypub.go index 64c644a..4c9080a 100644 --- a/activitypub.go +++ b/activitypub.go @@ -45,18 +45,16 @@ var user = `{ func webfingeRequest(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/activity+json") io.WriteString(w, apActor) - return + } func serveUser(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/activity+json") io.WriteString(w, user) - return } func serveProfileHtml(w http.ResponseWriter, r *http.Request) { http.Redirect(w, r, "https://treefort.piusbird.space/index", http.StatusMovedPermanently) - return } diff --git a/blog-backend.log b/blog-backend.log new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/blog-backend.log diff --git a/cmd/setupdb/main.go b/cmd/setupdb/main.go new file mode 100644 index 0000000..6535c21 --- /dev/null +++ b/cmd/setupdb/main.go @@ -0,0 +1,46 @@ +package main + +import ( + "fmt" + "log" + "os" + + "gorm.io/driver/mysql" + "gorm.io/gorm" + "piusbird.space/dragonsroost/models" + "piusbird.space/dragonsroost/utils" +) + +func main() { + dsn := os.Getenv("DSN") + db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) + if err != nil { + panic("Database connection error" + err.Error()) + } + log.Println("Create Tables") + db.AutoMigrate(&models.Key{}) + db.AutoMigrate(&models.Page{}) + db.AutoMigrate(&models.Post{}) + db.AutoMigrate(&models.LogEntry{}) + posts, err := utils.PostsToStructs() + if err != nil { + panic("Database Failure" + err.Error()) + } + for p := posts.Front(); p != nil; p = p.Next() { + vl := p.Value.(models.Post) + db.Create(&vl) + + } + pages, err := utils.PagesToStructs() + for p := pages.Front(); p != nil; p = p.Next() { + vl := p.Value.(models.Page) + db.Create(&vl) + + } + fmt.Println("DB Import successful") + var testActor models.Key + testActor.Key = utils.TestKey + testActor.User = "Test" + db.Create(&testActor) + return +} diff --git a/config.go b/config.go new file mode 100644 index 0000000..61c1623 --- /dev/null +++ b/config.go @@ -0,0 +1,5 @@ +package main + +var dsn = "web:changethis@unix(/var/lib/mysql/mysql.sock)/website?charset=utf8mb4&parseTime=True&loc=Local" +var timelayout = "2006-01-02" +var RSS_NUMPOST int = 15 diff --git a/main.go b/main.go index 11c740b..17fba3b 100644 --- a/main.go +++ b/main.go @@ -31,18 +31,19 @@ import ( "gorm.io/driver/mysql" "gorm.io/gorm" "piusbird.space/dragonsroost/models" + "piusbird.space/dragonsroost/utils" ) -func renderMarkdownPage(pagename string) (Page, error) { +func renderMarkdownPage(pagename string) (utils.Page, error) { db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) if err != nil { - return Page{}, err + return utils.Page{}, err } var result models.Page db.Where("short_name = ?", pagename).First(&result) if result.Text == nil { - return Page{}, errors.New("Not found in db") + return utils.Page{}, errors.New("not found in db") } markdown := goldmark.New( @@ -56,12 +57,13 @@ func renderMarkdownPage(pagename string) (Page, error) { var buf bytes.Buffer context := parser.NewContext() if err := markdown.Convert(result.Text, &buf, parser.WithContext(context)); err != nil { - return Page{}, err + ret := utils.Page{} + return ret, err } metaData := meta.Get(context) title := metaData["Title"] render := buf.String() - retPage := Page{} + retPage := utils.Page{} retPage.Title = title.(string) retPage.Html = render return retPage, nil @@ -151,7 +153,7 @@ func rssFeed(w http.ResponseWriter, req *http.Request) { feedItems = append(feedItems, &feeds.Item{ - Id: string(item.ID), + Id: string(rune(item.ID)), Title: item.Title, Link: &feeds.Link{Href: finalUrl}, Description: buf.String(), @@ -182,7 +184,6 @@ func rssFeed(w http.ResponseWriter, req *http.Request) { } - return } var tplBlogLanding = pongo2.Must(pongo2.FromFile("templates/blog.html")) @@ -203,12 +204,12 @@ func blogLanding(w http.ResponseWriter, req *http.Request) { http.Error(w, result.Error.Error(), http.StatusBadRequest) return } - var newPost []PostMeta + var newPost []utils.PostMeta // You might be wondering oh why doesn't he just put the url in the db // STATELESSNESS is the answer for _, post := range allPost { finalUrl, _ := url.JoinPath(baseURL, "/blog/", post.Slug) - pm := PostMeta{} + pm := utils.PostMeta{} pm.Date = post.CreatedAt.Format(time.RFC1123) pm.Title = post.Title tmp := "Lol" @@ -251,7 +252,7 @@ func getBlogPost(w http.ResponseWriter, req *http.Request) { http.Error(w, err.Error(), http.StatusBadRequest) return } - var retPage Page + var retPage utils.Page retPage.Title = result.Title retPage.Html = buf.String() tplBlog.ExecuteWriter(pongo2.Context{"title": retPage.Title, "post": retPage, "metadata": result}, w) @@ -273,7 +274,7 @@ func UpdatePost(w http.ResponseWriter, r *http.Request) { return } var faildUploadLog models.LogEntry - faildUploadLog.Type = typeFailed + faildUploadLog.Type = utils.TypeFailed faildUploadLog.ForUser = string(r.RemoteAddr) faildUploadLog.Affected = "EUSER" actor := r.Header.Get("X-Username") @@ -341,7 +342,7 @@ func UpdatePost(w http.ResponseWriter, r *http.Request) { return } - var upload JsonUpload + var upload utils.JsonUpload err = json.Unmarshal(raw_json, &upload) if err != nil { faildUploadLog.Affected = "EIOJSON" @@ -355,13 +356,13 @@ func UpdatePost(w http.ResponseWriter, r *http.Request) { oType, _ := strconv.ParseInt(upload.Type, 10, 16) logTransact.Type = int16(oType) - if oType == Undefined { + if oType == utils.Undefined { faildUploadLog.Affected = "EWRONGVERB" db.Create(&faildUploadLog) http.Error(w, "Undefined Type", http.StatusForbidden) return } - if oType == typePost { + if oType == utils.TypePost { var newPost models.Post var oldPost models.Post newPost.Title = upload.Title @@ -376,7 +377,7 @@ func UpdatePost(w http.ResponseWriter, r *http.Request) { logTransact.Affected = newPost.Slug db.Create(&logTransact) w.Header().Set("Content-Type", "text/plain") - io.WriteString(w, "ok: "+string(result.RowsAffected)) + io.WriteString(w, "ok: "+string(rune(result.RowsAffected))) return @@ -392,11 +393,11 @@ func UpdatePost(w http.ResponseWriter, r *http.Request) { logTransact.Affected = oldPost.Slug db.Create(&logTransact) w.Header().Set("Content-Type", "text/plain") - io.WriteString(w, "ok: "+string(result.RowsAffected)+"\n") + io.WriteString(w, "ok: "+string(rune(result.RowsAffected))+"\n") return } - if oType == typePage { + if oType == utils.TypePage { var newPost models.Page var oldPost models.Page newPost.Title = upload.Title @@ -411,7 +412,7 @@ func UpdatePost(w http.ResponseWriter, r *http.Request) { logTransact.Affected = newPost.ShortName db.Create(&logTransact) w.Header().Set("Content-Type", "text/plain") - io.WriteString(w, "ok: "+string(result.RowsAffected)+"\n") + io.WriteString(w, "ok: "+string(rune(result.RowsAffected))+"\n") return } @@ -429,7 +430,7 @@ func UpdatePost(w http.ResponseWriter, r *http.Request) { logTransact.Affected = oldPost.ShortName db.Create(&logTransact) w.Header().Set("Content-Type", "text/plain") - io.WriteString(w, "ok: "+string(result.RowsAffected)+"\n") + io.WriteString(w, "ok: "+string(rune(result.RowsAffected))+"\n") return } @@ -442,7 +443,7 @@ func uploadHandler(w http.ResponseWriter, r *http.Request) { return } var faildUploadLog models.LogEntry - faildUploadLog.Type = typeFailed + faildUploadLog.Type = utils.TypeFailed faildUploadLog.ForUser = string(r.RemoteAddr) faildUploadLog.Affected = "EUSER" actor := r.Header.Get("X-Username") @@ -536,7 +537,6 @@ func uploadHandler(w http.ResponseWriter, r *http.Request) { fh.Close() w.WriteHeader(http.StatusAccepted) io.WriteString(w, "Ok\n") - return } func main() { @@ -547,7 +547,6 @@ func main() { r.HandleFunc("/api/upload", uploadHandler).Methods("POST") r.HandleFunc("/feeds/{type}", rssFeed) - r.HandleFunc("/setup/", setupDatabase) blogroute := r.PathPrefix("/blog").Subrouter() blogroute.HandleFunc("/", blogLanding) blogroute.HandleFunc("/{slug}", getBlogPost) diff --git a/utils.go b/utils/utils.go index 9c1fa7a..29c63ef 100644 --- a/utils.go +++ b/utils/utils.go @@ -1,4 +1,4 @@ -package main +package utils import ( "bytes" @@ -17,9 +17,6 @@ import ( "piusbird.space/dragonsroost/models" ) -var dsn = "web:changethis@unix(/var/lib/mysql/mysql.sock)/website?charset=utf8mb4&parseTime=True&loc=Local" -var timelayout = "2006-01-02" - type Page struct { Title string Html string @@ -34,9 +31,9 @@ type EnityType int16 const ( Undefined = 0 - typePage = 1 - typePost = 2 - typeFailed = 3 + TypePage = 1 + TypePost = 2 + TypeFailed = 3 ) const RSS_NUMPOST = 10 @@ -47,7 +44,8 @@ type JsonUpload struct { Body string } -var testKey = "nR6FC9GHk+olScO5FPpUYoppgo95SHvd5UJKKFt4Crs=" +var timelayout = "2006-01-02" +var TestKey = "nR6FC9GHk+olScO5FPpUYoppgo95SHvd5UJKKFt4Crs=" type PostMetaByDate []PostMeta @@ -58,7 +56,7 @@ func (a PostMetaByDate) Less(i, j int) bool { timeJ, _ := time.Parse(a[j].Date, time.RFC1123) return timeI.Before(timeJ) } -func postsToStructs() (list.List, error) { +func PostsToStructs() (list.List, error) { files, err := ioutil.ReadDir("content/posts") if err != nil { return *list.New(), err @@ -110,7 +108,7 @@ func postsToStructs() (list.List, error) { return *postList, nil } -func pagesToStructs() (list.List, error) { +func PagesToStructs() (list.List, error) { files, err := ioutil.ReadDir("content/pages") if err != nil { return *list.New(), err |