// Get the input $input = json_decode(file_get_contents('php://input'), true); $fileKey = $input['file_key'] ?? null; if (!$fileKey) { echo json_encode(['success' => false, 'error' => 'File key not provided']); exit; } try { $minio = new MinioUploader(); // Parse bucket and key from URL (same logic as membership system) $urlParts = parse_url($fileKey); if (isset($urlParts['path'])) { $pathParts = explode('/', ltrim($urlParts['path'], '/')); // e.g. /bucket/key if (count($pathParts) >= 2) { $bucket = $pathParts[0]; $key = implode('/', array_slice($pathParts, 1)); $presignedUrl = $minio->getPresignedUrl($bucket, $key, 600); if ($presignedUrl) { echo json_encode(['success' => true, 'url' => $presignedUrl]); } else { echo json_encode(['success' => false, 'error' => 'Failed to generate presigned URL']); } } else { echo json_encode(['success' => false, 'error' => 'Invalid file path format']); } } else { echo json_encode(['success' => false, 'error' => 'Invalid URL format']); } } catch (Exception $e) { error_log("Error generating presigned URL: " . $e->getMessage()); echo json_encode(['success' => false, 'error' => 'Internal server error']); } ?>