false, 'ERROR' => 'method_not_allowed'], 405); } $fileId = (int) ($_GET['FileID'] ?? 0); if ($fileId <= 0) jsonResponse(['OK' => false, 'ERROR' => 'file_id_required']); $record = queryOne("SELECT * FROM Hub_Files WHERE ID = ?", [$fileId]); if (!$record) jsonResponse(['OK' => false, 'ERROR' => 'file_not_found']); jsonResponse([ 'OK' => true, 'File' => [ 'ID' => (int) $record['ID'], 'MessageID' => $record['MessageID'] ? (int) $record['MessageID'] : null, 'ChannelID' => (int) $record['ChannelID'], 'UploaderAddress' => $record['UploaderAddress'], 'FileName' => $record['FileName'], 'FileSize' => (int) $record['FileSize'], 'MimeType' => $record['MimeType'], 'DownloadURL' => baseUrl() . '/' . $record['StoragePath'], 'ThumbnailURL' => $record['ThumbnailPath'] ? baseUrl() . '/' . $record['ThumbnailPath'] : null, 'CreatedAt' => toISO8601($record['CreatedAt']), ], ]);