104fd306cSNickeau<?php 204fd306cSNickeau 304fd306cSNickeaunamespace ComboStrap; 404fd306cSNickeau 504fd306cSNickeauuse ComboStrap\Web\Url; 604fd306cSNickeau 704fd306cSNickeau/** 804fd306cSNickeau * Return raw files. 904fd306cSNickeau * The mime is determined by the path. 1004fd306cSNickeau */ 1104fd306cSNickeauclass FetcherRawLocalPath extends IFetcherAbs implements IFetcherPath, IFetcherSource 1204fd306cSNickeau{ 1304fd306cSNickeau 1404fd306cSNickeau use FetcherTraitWikiPath; 1504fd306cSNickeau 1604fd306cSNickeau public const SRC_QUERY_PARAMETER = "src"; 1704fd306cSNickeau const NAME = "raw"; 1804fd306cSNickeau 1904fd306cSNickeau 2004fd306cSNickeau public static function createFromPath(WikiPath $wikiPath): FetcherRawLocalPath 2104fd306cSNickeau { 2204fd306cSNickeau $fetcherRaw = self::createEmpty(); 2304fd306cSNickeau $fetcherRaw->setSourcePath($wikiPath); 2404fd306cSNickeau return $fetcherRaw; 2504fd306cSNickeau } 2604fd306cSNickeau 2704fd306cSNickeau /** 2804fd306cSNickeau * Empty because a fetch is mostly build through an URL 2904fd306cSNickeau * @return FetcherRawLocalPath 3004fd306cSNickeau */ 3104fd306cSNickeau public static function createEmpty(): FetcherRawLocalPath 3204fd306cSNickeau { 3304fd306cSNickeau return new FetcherRawLocalPath(); 3404fd306cSNickeau } 3504fd306cSNickeau 3604fd306cSNickeau /** 3704fd306cSNickeau * @throws ExceptionBadArgument 3804fd306cSNickeau */ 3904fd306cSNickeau public static function createLocalFromFetchUrl(Url $fetchUrl): FetcherRawLocalPath 4004fd306cSNickeau { 4104fd306cSNickeau $fetchRaw = FetcherRawLocalPath::createEmpty(); 4204fd306cSNickeau $fetchRaw->buildFromUrl($fetchUrl); 4304fd306cSNickeau return $fetchRaw; 4404fd306cSNickeau } 4504fd306cSNickeau 4604fd306cSNickeau 4704fd306cSNickeau /** 4804fd306cSNickeau * @return Url - an URL to download the media 4904fd306cSNickeau */ 5004fd306cSNickeau function getFetchUrl(Url $url = null): Url 5104fd306cSNickeau { 5204fd306cSNickeau 5304fd306cSNickeau $url = parent::getFetchUrl($url); 54*70bbd7f1Sgerardnico $this->addLocalPathParametersToFetchUrl($url, MediaMarkup::$MEDIA_QUERY_PARAMETER); 5504fd306cSNickeau return $url; 5604fd306cSNickeau 5704fd306cSNickeau } 5804fd306cSNickeau 5904fd306cSNickeau /** 6004fd306cSNickeau * @param TagAttributes $tagAttributes 6104fd306cSNickeau * @return FetcherRawLocalPath 6204fd306cSNickeau * @throws ExceptionBadArgument - if the media/id was not found 6304fd306cSNickeau * @throws ExceptionBadSyntax 6404fd306cSNickeau * @throws ExceptionNotExists 6504fd306cSNickeau * @throws ExceptionNotFound 6604fd306cSNickeau */ 6704fd306cSNickeau public function buildFromTagAttributes(TagAttributes $tagAttributes): FetcherRawLocalPath 6804fd306cSNickeau { 6904fd306cSNickeau 7004fd306cSNickeau $this->buildOriginalPathFromTagAttributes($tagAttributes); 7104fd306cSNickeau parent::buildFromTagAttributes($tagAttributes); 7204fd306cSNickeau return $this; 7304fd306cSNickeau 7404fd306cSNickeau } 7504fd306cSNickeau 7604fd306cSNickeau function getFetchPath(): LocalPath 7704fd306cSNickeau { 7804fd306cSNickeau return $this->getSourcePath()->toLocalPath(); 7904fd306cSNickeau } 8004fd306cSNickeau 8104fd306cSNickeau 8204fd306cSNickeau /** 8304fd306cSNickeau * Buster for the {@link IFetcher} interface 8404fd306cSNickeau * @throws ExceptionNotFound 8504fd306cSNickeau */ 8604fd306cSNickeau function getBuster(): string 8704fd306cSNickeau { 8804fd306cSNickeau return FileSystems::getCacheBuster($this->getSourcePath()); 8904fd306cSNickeau } 9004fd306cSNickeau 9104fd306cSNickeau 9204fd306cSNickeau public 9304fd306cSNickeau function getFetcherName(): string 9404fd306cSNickeau { 9504fd306cSNickeau return self::NAME; 9604fd306cSNickeau } 9704fd306cSNickeau 9804fd306cSNickeau public function getLabel(): string 9904fd306cSNickeau { 10004fd306cSNickeau $sourcePath = $this->getSourcePath(); 10104fd306cSNickeau return ResourceName::getFromPath($sourcePath); 10204fd306cSNickeau } 10304fd306cSNickeau} 104