file('media'); if ($uploadedFile) { $fileContent = file_get_contents($uploadedFile->getPathname()); $originalName = MediaEngine::addMedia( 'user-i', 'image', 'user_uploaded', 'web_app', $fileContent, null, 'save_file', $uploadedFile->getClientOriginalName(), 'r2', null, $userId ); } // Laravel upload with auto-generated filename $uploadedFile2 = request()->file('another_media'); if ($uploadedFile2) { $fileContent = file_get_contents($uploadedFile2->getPathname()); $autoName = MediaEngine::addMedia( 'user-i', 'image', 'user_uploaded', 'web_app', $fileContent, null, 'save_file', null, 'r2', null, $userId ); } return [$originalName ?? null, $autoName ?? null]; } /** * ============================================ * REAL-WORLD SCENARIOS * ============================================ */ /** * Social media integration examples */ public function socialMediaIntegration() { $userId = 202; // Instagram - save reference (fast) $instagram = MediaEngine::addMedia( 'user-i', 'image', 'user_uploaded', 'instagram', null, 'https://instagram.com/photos/abc123.jpg', 'save_url', null, 'r2', null, $userId ); // YouTube thumbnail - download (reliable) $youtube = MediaEngine::addMedia( 'user-i', 'image', 'system_uploaded', 'youtube_api', null, 'https://img.youtube.com/vi/VIDEO_ID/maxresdefault.jpg', 'download' ); // TikTok - backward compatible $tiktok = MediaEngine::addMedia( 'user-v', 'video', 'user_uploaded', 'tiktok', null, 'https://tiktok.com/videos/dance.mp4' ); return [$instagram, $youtube, $tiktok]; } /** * AI-generated content examples */ public function aiContentExamples() { $userId = 303; // ElevenLabs voice - save reference $voice = MediaEngine::addMedia( 'user-a', 'audio', 'ai_generated', 'elevenlabs', null, 'https://api.elevenlabs.io/voice_sample.mp3' ); // Runway video - download for backup $video = MediaEngine::addMedia( 'user-v', 'video', 'ai_generated', 'runway_ml', null, 'https://api.runwayml.com/video_abc.mp4', 'download', null, 'r2', null, $userId ); // Midjourney image - save reference $image = MediaEngine::addMedia( 'user-i', 'image', 'ai_generated', 'midjourney', null, 'https://cdn.midjourney.com/artwork_def.png', 'save_url', null, 'r2', null, $userId ); return [$voice, $video, $image]; } /** * Enterprise/business scenarios */ public function enterpriseExamples() { $userId = 404; // CDN assets - reference only $cdnAsset = MediaEngine::addMedia( 'user-i', 'image', 'system_uploaded', 'cdn', null, 'https://cdn.company.com/logo.png', 'save_url' ); // Important documents - download and backup $document = MediaEngine::addMedia( 'user-d', 'document', 'user_uploaded', 'web_app', null, 'https://external-api.com/contract.pdf', 'download', 'contract-2024.pdf', 'r2', 'Business Contract', $userId ); // User profile photo - flexible handling $profile = MediaEngine::addMedia( 'user-i', 'image', 'user_uploaded', 'web_app', null, 'https://social-login.com/avatar.jpg', 'download', null, 'r2', 'Profile Photo', $userId ); return [$cdnAsset, $document, $profile]; } /** * ============================================ * BACKWARD COMPATIBILITY * ============================================ */ /** * Examples showing backward compatibility with auto-detection */ public function backwardCompatibilityExamples() { // OLD CODE - still works with auto-detection $oldUrl = MediaEngine::addMedia( 'user-i', 'image', 'user_uploaded', 'web_app', null, 'https://example.com/photo.jpg' // Auto-detects 'save_url' ); $oldFile = MediaEngine::addMedia( 'user-i', 'image', 'user_uploaded', 'web_app', file_get_contents('/path/to/image.jpg') // Uses default 'save_file' ); // NEW CODE - explicit modes $newUrlRef = MediaEngine::addMedia( 'user-i', 'image', 'user_uploaded', 'web_app', null, 'https://example.com/photo.jpg', 'save_url' ); $newDownload = MediaEngine::addMedia( 'user-i', 'image', 'user_uploaded', 'web_app', null, 'https://example.com/photo.jpg', 'download' ); $newFile = MediaEngine::addMedia( 'user-i', 'image', 'user_uploaded', 'web_app', file_get_contents('/path/to/image.jpg'), null, 'save_file' ); return [$oldUrl, $oldFile, $newUrlRef, $newDownload, $newFile]; } /** * ============================================ * BULK OPERATIONS * ============================================ */ /** * Bulk processing examples */ public function bulkOperationExamples() { $userId = 505; $urls = [ 'https://example.com/photo1.jpg', 'https://example.com/photo2.png', 'https://example.com/photo3.gif', ]; $results = []; // Bulk URL references foreach ($urls as $url) { $media = MediaEngine::addMedia( 'user-i', 'image', 'user_uploaded', 'bulk_import', null, $url, 'save_url', null, 'r2', null, $userId ); $results[] = $media; } // Bulk downloads with error handling $downloadResults = []; foreach ($urls as $url) { try { $media = MediaEngine::addMedia( 'user-i', 'image', 'user_uploaded', 'bulk_download', null, $url, 'download', null, 'r2', null, $userId ); $downloadResults[] = $media; } catch (\Exception $e) { $downloadResults[] = ['error' => $e->getMessage(), 'url' => $url]; } } return [$results, $downloadResults]; } /** * ============================================ * ERROR HANDLING * ============================================ */ /** * Comprehensive error handling examples */ public function errorHandlingExamples() { try { // Invalid URL $invalidUrl = MediaEngine::addMedia( 'user-i', 'image', 'user_uploaded', 'web_app', null, 'https://invalid-domain-12345.com/image.jpg', 'download' ); } catch (\RuntimeException $e) { // Handle download failure $error1 = ['error' => 'Download failed: '.$e->getMessage()]; } try { // Invalid collection key $invalidCollection = MediaEngine::addMedia( 'invalid-collection', 'image', 'user_uploaded', 'web_app', null, 'https://example.com/image.jpg' ); } catch (\InvalidArgumentException $e) { // Handle invalid collection $error2 = ['error' => 'Invalid collection: '.$e->getMessage()]; } try { // Invalid mode $invalidMode = MediaEngine::addMedia( 'user-i', 'image', 'user_uploaded', 'web_app', null, 'https://example.com/image.jpg', 'invalid_mode' ); } catch (\InvalidArgumentException $e) { // Handle invalid mode $error3 = ['error' => 'Invalid mode: '.$e->getMessage()]; } return [$error1 ?? null, $error2 ?? null, $error3 ?? null]; } /** * ============================================ * ADVANCED USE CASES * ============================================ */ /** * Advanced scenarios with custom settings */ public function advancedExamples() { $userId = 606; // Custom filename and MIME type $customized = MediaEngine::addMedia( 'user-i', 'image', 'user_uploaded', 'web_app', null, 'https://example.com/photo.jpg', 'download', 'custom-avatar-2024.jpg', 'r2', 'Profile Avatar', $userId, 'image/jpeg' ); // Multiple disk storage $s3Storage = MediaEngine::addMedia( 'user-v', 'video', 'user_uploaded', 'web_app', file_get_contents('/path/to/video.mp4'), null, 'save_file', 'presentation-video.mp4', 's3', 'Presentation Video', $userId ); // Complex AI workflow $aiWorkflow = MediaEngine::addMedia( 'user-a', 'audio', 'ai_generated', 'custom_pipeline', null, 'https://ai-pipeline.com/processed-audio.wav', 'download', 'processed-voice-'.time().'.wav', 'r2', 'AI Processed Voice', $userId, 'audio/wav' ); return [$customized, $s3Storage, $aiWorkflow]; } /** * Performance optimization examples */ public function performanceExamples() { $userId = 707; // Fast CDN reference (no download overhead) $fastReference = MediaEngine::addMedia( 'user-i', 'image', 'user_uploaded', 'web_app', null, 'https://fast-cdn.com/optimized-image.webp', 'save_url' ); // Strategic download for critical assets $criticalAsset = MediaEngine::addMedia( 'user-i', 'image', 'system_uploaded', 'web_app', null, 'https://external-api.com/logo.png', 'download', 'company-logo.png', 'r2', 'Company Logo' ); // Lazy loading approach $lazyLoad = MediaEngine::addMedia( 'user-v', 'video', 'user_uploaded', 'web_app', null, 'https://video-service.com/large-video.mp4', 'save_url', null, 'r2', null, $userId ); return [$fastReference, $criticalAsset, $lazyLoad]; } }