diff --git a/Dockerfile b/Dockerfile index f19925e..68d775a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,8 +12,10 @@ COPY go.mod go.sum ./ # Download dependencies RUN go mod download -COPY main.go . +COPY ./*.go . COPY internal ./internal +COPY pages ./pages + # Enable CGO for go-sqlite3 ENV CGO_ENABLED=1 @@ -26,7 +28,6 @@ WORKDIR /app COPY --from=builder /app/main . COPY keys ./keys -COPY pages ./pages EXPOSE 8080 diff --git a/pages/home.gmi b/home.gmi similarity index 100% rename from pages/home.gmi rename to home.gmi diff --git a/pages/gemlog.gmi b/internal/gemlog/gemlog.gmi similarity index 100% rename from pages/gemlog.gmi rename to internal/gemlog/gemlog.gmi diff --git a/internal/gemlog/gemlog.go b/internal/gemlog/gemlog.go index 876fdf3..f4332c7 100644 --- a/internal/gemlog/gemlog.go +++ b/internal/gemlog/gemlog.go @@ -1,6 +1,7 @@ package gemlog import ( + _ "embed" "fmt" "log/slog" "os" @@ -51,16 +52,14 @@ func (g *Gemlog) HandleRequest(w gemini.ResponseWriter, req *gemini.Request) { } } +//go:embed gemlog.gmi +var pageContnet string + func (g *Gemlog) serveIndex(w gemini.ResponseWriter, req *gemini.Request) { w.WriteStatusMsg(gemini.StatusSuccess, "text/gemini") var content strings.Builder - page, err := os.ReadFile("./pages/gemlog.gmi") - if err != nil { - slog.Error("Problem reading gemlog page", "error", err) - return - } - content.Write(page) + content.Write([]byte(pageContnet)) content.WriteString("\n") posts, err := gemlog.ListGemLogs(g.config) diff --git a/pages/guestbook.gmi b/internal/guestbook/guestbook.gmi similarity index 100% rename from pages/guestbook.gmi rename to internal/guestbook/guestbook.gmi diff --git a/internal/guestbook/guestbook.go b/internal/guestbook/guestbook.go index 79448c7..786f89c 100644 --- a/internal/guestbook/guestbook.go +++ b/internal/guestbook/guestbook.go @@ -4,10 +4,10 @@ import ( "crypto/sha256" "crypto/x509" "database/sql" + _ "embed" "encoding/hex" "fmt" "log/slog" - "os" "strings" "time" @@ -215,15 +215,13 @@ func censorString(s string) string { return string(masked) } +//go:embed guestbook.gmi +var pageContnet string + func (book *GuestBook) serveIndex(w gemini.ResponseWriter, req *gemini.Request) { w.WriteStatusMsg(gemini.StatusSuccess, "text/gemini") var content strings.Builder - page, err := os.ReadFile("./pages/guestbook.gmi") - if err != nil { - slog.Error("Problem reading guestbook.gmi", "error", err) - return - } - content.Write(page) + content.Write([]byte(pageContnet)) content.WriteString("\n") rows, err := book.db.Query("SELECT id, name, approved, created_at, message FROM guestbook ORDER BY created_at DESC") diff --git a/pages/microblog.gmi b/internal/microblog/microblog.gmi similarity index 100% rename from pages/microblog.gmi rename to internal/microblog/microblog.gmi diff --git a/internal/microblog/microblog.go b/internal/microblog/microblog.go index 7229613..b306515 100644 --- a/internal/microblog/microblog.go +++ b/internal/microblog/microblog.go @@ -1,11 +1,11 @@ package microblog import ( + _ "embed" "encoding/json" "fmt" "gemini_site/internal/pocketbase" "log/slog" - "os" "regexp" "strconv" "strings" @@ -216,6 +216,9 @@ func drawPost(builder *strings.Builder, p post) { // p.Timestamp.Format("2006-01-02 15:04"))) } +//go:embed microblog.gmi +var pageContnet string + // serveBlogIndex serves the main blog page with recent posts func (mb *MicroBlog) serveIndex(w gemini.ResponseWriter, req *gemini.Request, pageNum int) { w.WriteStatusMsg(gemini.StatusSuccess, "text/gemini") @@ -225,12 +228,7 @@ func (mb *MicroBlog) serveIndex(w gemini.ResponseWriter, req *gemini.Request, pa // content.WriteString("Here are my microblog posts from various plantforms\n") // Read and include the contents of ../../pages/microblog.gmi if pageNum == 1 { - page, err := os.ReadFile("./pages/microblog.gmi") - if err != nil { - slog.Error("Problem reading microblog page", "error", err) - return - } - content.Write(page) + content.Write([]byte(pageContnet)) content.WriteString("\n") } diff --git a/main.go b/main.go index fcca8ac..c11bff1 100644 --- a/main.go +++ b/main.go @@ -2,6 +2,8 @@ package main import ( "database/sql" + _ "embed" + "errors" "flag" "fmt" "log/slog" @@ -21,6 +23,9 @@ import ( gemini "github.com/kulak/gemini" ) +//go:embed home.gmi +var homePageContent string + type MainHandler struct { blog microblog.Handler gemlog gemlog.Handler @@ -58,11 +63,8 @@ func (h MainHandler) ServeGemini(w gemini.ResponseWriter, req *gemini.Request) { switch req.URL.Path { case "/": w.WriteStatusMsg(gemini.StatusSuccess, "text/gemini") - data, err := os.ReadFile("pages/home.gmi") - requireNoError(err) - page := string(data) var content strings.Builder - content.WriteString(page) + content.WriteString(homePageContent) content.WriteString(fmt.Sprintf("\n\n------ stats: total requests served %d, this page %d ------", h.counter.GetTotal(), h.counter.Get(req.URL.Path))) w.WriteBody([]byte(content.String())) // case "/user": diff --git a/tasks.txt b/tasks.txt new file mode 100644 index 0000000..2f80d77 --- /dev/null +++ b/tasks.txt @@ -0,0 +1,5 @@ +task: add hexidecimal numbering to gemlog + +-----------DONE LINE----------- + +DONE task: add request counter