2025-10-20 08:54:21 +01:00
|
|
|
package handlers
|
|
|
|
|
|
|
|
|
|
import (
|
2025-12-06 15:57:23 +00:00
|
|
|
"github.com/juanatsap/cv-site/internal/cache"
|
2025-12-06 17:05:17 +00:00
|
|
|
c "github.com/juanatsap/cv-site/internal/constants"
|
2025-11-04 19:07:34 +00:00
|
|
|
"github.com/juanatsap/cv-site/internal/pdf"
|
2025-12-06 17:05:17 +00:00
|
|
|
"github.com/juanatsap/cv-site/internal/email"
|
2025-10-20 08:54:21 +01:00
|
|
|
"github.com/juanatsap/cv-site/internal/templates"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// CVHandler handles CV-related requests
|
2025-11-20 17:01:50 +00:00
|
|
|
// Methods are split across multiple files for better organization:
|
|
|
|
|
// - cv_pages.go: Page rendering (Home, CVContent, DefaultCVShortcut)
|
|
|
|
|
// - cv_pdf.go: PDF export (ExportPDF)
|
|
|
|
|
// - cv_htmx.go: HTMX toggles (ToggleLength, ToggleIcons, SwitchLanguage, ToggleTheme)
|
2025-12-02 14:27:03 +00:00
|
|
|
// - cv_contact.go: Contact form submission (HandleContact)
|
2025-11-20 17:01:50 +00:00
|
|
|
// - cv_helpers.go: Helper functions (skills, dates, git, templates, cookies)
|
2025-10-20 08:54:21 +01:00
|
|
|
type CVHandler struct {
|
2025-11-04 19:07:34 +00:00
|
|
|
templates *templates.Manager
|
|
|
|
|
pdfGenerator *pdf.Generator
|
2025-12-06 17:05:17 +00:00
|
|
|
emailService *email.Service
|
2025-11-04 19:07:34 +00:00
|
|
|
serverAddr string
|
2025-12-06 15:57:23 +00:00
|
|
|
dataCache *cache.DataCache
|
2025-10-20 08:54:21 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// NewCVHandler creates a new CV handler
|
2025-12-06 17:05:17 +00:00
|
|
|
func NewCVHandler(tmpl *templates.Manager, serverAddr string, emailService *email.Service, dataCache *cache.DataCache) *CVHandler {
|
2025-10-20 08:54:21 +01:00
|
|
|
return &CVHandler{
|
2025-11-04 19:07:34 +00:00
|
|
|
templates: tmpl,
|
2025-12-06 17:05:17 +00:00
|
|
|
pdfGenerator: pdf.NewGenerator(c.TimeoutPDFGeneration),
|
2025-12-02 14:27:03 +00:00
|
|
|
emailService: emailService,
|
2025-11-04 19:07:34 +00:00
|
|
|
serverAddr: serverAddr,
|
2025-12-06 15:57:23 +00:00
|
|
|
dataCache: dataCache,
|
2025-10-20 08:54:21 +01:00
|
|
|
}
|
|
|
|
|
}
|