File modules/cms/generator/target/TargetFactory.class.php

Last commit: Sat Dec 4 04:35:42 2021 +0100	dankert	New: Amazon S3 as a Publishing-Target, work in progress.
1 <?php 2 3 4 namespace cms\generator\target; 5 6 7 use util\ClassUtils; 8 use util\exception\PublisherException; 9 10 class TargetFactory 11 { 12 13 /** 14 * Creates a target for publishing files. 15 * 16 * @param string $url URL 17 * @return Target 18 * @throws PublisherException if no target could be created 19 */ 20 public static function getTargetForUrl( $url ) { 21 22 $scheme = parse_url( $url,PHP_URL_SCHEME ); 23 24 /** @var Target $target */ 25 $target = null; 26 27 switch( $scheme ) { 28 29 case '': 30 case 'file': 31 case 'local': 32 $target = new LocalTarget($url); 33 break; 34 35 case 'dav': 36 $target = new DavTarget($url); 37 break; 38 39 case 'ftp': 40 $target = new FtpTarget($url); 41 break; 42 43 case 'ftps': 44 $target = new FtpsTarget($url); 45 break; 46 47 case 'scp': 48 $target = new ScpTarget($url); 49 break; 50 51 case 'sftp': 52 $target = new SFtpTarget($url); 53 break; 54 55 case 's3': 56 $target = new S3Target($url); 57 break; 58 59 default: 60 throw new PublisherException('The scheme "'.$scheme.'" is not supported.' ); 61 } 62 63 if ( ! $target::isAvailable() ) 64 throw new PublisherException(ClassUtils::getSimpleClassName($target).' is not available.' ); 65 66 return $target; 67 } 68 }
Download modules/cms/generator/target/TargetFactory.class.php
History Sat, 4 Dec 2021 04:35:42 +0100 dankert New: Amazon S3 as a Publishing-Target, work in progress. Wed, 18 Nov 2020 21:01:59 +0100 Jan Dankert Renaming of target classes for naming convention reasons. Wed, 14 Oct 2020 23:49:54 +0200 Jan Dankert Refactoring: Creating the target instance with a Factory (Java style); Asynchronous publishing of files.