Fix group file metadata and access
This commit is contained in:
+28
-1
@@ -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 != "" {
|
||||
|
||||
Reference in New Issue
Block a user