package routes import ( "fmt" "html/template" "time" "github.com/gofiber/fiber/v2" "github.com/medium.rip/pkg/client" "github.com/medium.rip/pkg/converters" ) func show(c *fiber.Ctx) error { postId := converters.ConvertId(c) if postId == "" { return c.Status(422).SendString("Invalid post ID") } e, err := client.PostData(postId) if err != nil { return err } post := e.Data.Post publishDate := time.UnixMilli(e.Data.Post.CreatedAt) paragraphs := post.Content.BodyModel.Paragraphs p := converters.ConvertParagraphs(paragraphs) desc := "" if len(paragraphs) >= 0 { for _, p := range paragraphs { if p.Type == "H3" || p.Type == "P" { desc = p.Text break } } } imgUrl := "" for _, p := range paragraphs { if p.Type == "IMG" { imgUrl = fmt.Sprintf("https://miro.medium.com/v2/resize:fit:1200/%s", p.Metadata.ID) break } } return c.Render("show", fiber.Map { "Title": post.Title, "UserId": post.Creator.ID, "Author": post.Creator.Name, "PublishDate": publishDate.Format(time.DateOnly), "Paragraphs": template.HTML(p), "Description": desc, "Path": c.Path(), "Image": imgUrl, }) } func index(c *fiber.Ctx) error { return c.Render("index", fiber.Map { "Title": "medium.rip", }) } func RegisterRoutes(app *fiber.App) { app.Get("/", index) app.Get("/*", show) }