feat: add characters

This commit is contained in:
2026-07-10 00:56:03 +03:30
parent da6df0328f
commit fe0b63083c
19 changed files with 635 additions and 92 deletions
+23
View File
@@ -49,6 +49,29 @@ func CardsHandler(diskDir string) http.Handler {
})
}
// AvatarsHandler تصاویرِ شخصیتِ آواتار را سرو می‌کند: GET /avatars/<id>.png
// فقط از پوشه‌ی دیسکیِ آپلودِ ادمین (بدونِ embed)؛ اگر نبود ۴۰۴ (اپ به آواتارِ
// تصادفیِ پیش‌فرض برمی‌گردد).
func AvatarsHandler(diskDir string) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Access-Control-Allow-Origin", "*")
w.Header().Set("Cache-Control", "public, max-age=604800")
if diskDir != "" {
rel := filepath.Clean("/" + strings.TrimPrefix(r.URL.Path, "/avatars/"))
full := filepath.Join(diskDir, rel)
if st, err := os.Stat(full); err == nil && !st.IsDir() {
// SVG را با content-type درست بده تا مرورگر/پنل هم آن را نمایش دهد.
if strings.HasSuffix(strings.ToLower(full), ".svg") {
w.Header().Set("Content-Type", "image/svg+xml")
}
http.ServeFile(w, r, full)
return
}
}
http.NotFound(w, r)
})
}
// CarpetsHandler تصاویرِ فرش را سرو می‌کند: GET /carpets/<id>.jpg
// ابتدا از پوشه‌ی دیسکی (آپلودِ ادمین)، سپس از فرش‌های embed‌شده‌ی پیش‌فرض.
// اگر هیچ‌کدام نبود ۴۰۴ (اپ به میزِ ترسیمیِ classic برمی‌گردد).