Fix group file metadata and access

This commit is contained in:
richjohnrambo
2026-09-08 13:50:04 +08:00
parent 8116fb6fe8
commit 20c0b92d77
6 changed files with 141 additions and 5 deletions
+28 -1
View File
@@ -5220,7 +5220,7 @@ func serveIMGroupFiles(wrt http.ResponseWriter, req *http.Request, topic, tail s
if !decodeIMJSONBody(wrt, req, &body) {
return
}
fileID := strings.TrimSpace(body.FileID)
fileID := normalizeIMUploadedFileID(body.FileID)
if fileID == "" {
writeIMError(wrt, req, http.StatusBadRequest, 30000, imReasonMalformedRequest, "malformed request", map[string]any{"field": "file_id"})
return
@@ -6817,6 +6817,33 @@ func normalizeIMFileType(raw string) string {
}
}
func normalizeIMUploadedFileID(raw string) string {
value := strings.TrimSpace(raw)
if value == "" {
return ""
}
if cut, _, ok := strings.Cut(value, "?"); ok {
value = cut
}
if cut, _, ok := strings.Cut(value, "#"); ok {
value = cut
}
if strings.Contains(value, "/") && store.Store != nil && store.Store.GetMediaHandler() != nil {
if fid := store.Store.GetMediaHandler().GetIdFromUrl(value); !fid.IsZero() {
return fid.String()
}
}
if fid := types.ParseUid(value); !fid.IsZero() {
return fid.String()
}
if dot := strings.IndexByte(value, '.'); dot > 0 {
if fid := types.ParseUid(value[:dot]); !fid.IsZero() {
return fid.String()
}
}
return ""
}
func parseIMLimit(raw string, fallback, max int) int {
limit := fallback
if raw != "" {