summaryrefslogtreecommitdiff
path: root/blog/blog.go
diff options
context:
space:
mode:
Diffstat (limited to 'blog/blog.go')
-rw-r--r--blog/blog.go44
1 files changed, 44 insertions, 0 deletions
diff --git a/blog/blog.go b/blog/blog.go
new file mode 100644
index 0000000..8121043
--- /dev/null
+++ b/blog/blog.go
@@ -0,0 +1,44 @@
+package blog
+
+import (
+ "os"
+ "io"
+ "fmt"
+ "net/http"
+
+ "github.com/gorilla/mux"
+)
+
+type FileReader struct{}
+
+type SlugReader interface {
+ Read(slug string) (string, error)
+}
+
+func (fsr FileReader) Read(slug string) (string, error) {
+ f, err := os.Open(slug + ".md")
+ if err != nil {
+ return "", err
+ }
+ defer f.Close()
+ b, err := io.ReadAll(f)
+ if err != nil {
+ return "", err
+ }
+ return string(b), nil
+}
+
+func PostHandler(sl SlugReader) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ vars := mux.Vars(r) // Correctly retrieve vars from the request
+ slug := vars["slug"] // Access the slug
+ postMarkdown, err := sl.Read(slug)
+ if err != nil {
+ http.Error(w, "Post not found", http.StatusNotFound)
+ return
+ }
+ fmt.Fprint(w, postMarkdown)
+ }
+}
+
+