diff options
| author | roerick <sweeney@roerick.me> | 2025-10-19 17:12:05 -0600 |
|---|---|---|
| committer | roerick <sweeney@roerick.me> | 2025-10-19 17:12:05 -0600 |
| commit | 07e3c8d432d2ff9a51b54b93b384747bb038c939 (patch) | |
| tree | 059ac4fb061da9c6a5ce308b2d9461418027cb54 /blog | |
| parent | 0b76fa014a49cf58278b8e6cf81a0b285dc5773a (diff) | |
Diffstat (limited to 'blog')
| -rw-r--r-- | blog/blog.go | 44 |
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) + } +} + + |
