1*04fd306cSNickeau<?php 2*04fd306cSNickeau 3*04fd306cSNickeaunamespace ComboStrap; 4*04fd306cSNickeau 5*04fd306cSNickeauuse ComboStrap\Web\Url; 6*04fd306cSNickeau 7*04fd306cSNickeau/** 8*04fd306cSNickeau * Return raw files. 9*04fd306cSNickeau * The mime is determined by the path. 10*04fd306cSNickeau */ 11*04fd306cSNickeauclass FetcherRawLocalPath extends IFetcherAbs implements IFetcherPath, IFetcherSource 12*04fd306cSNickeau{ 13*04fd306cSNickeau 14*04fd306cSNickeau use FetcherTraitWikiPath; 15*04fd306cSNickeau 16*04fd306cSNickeau public const SRC_QUERY_PARAMETER = "src"; 17*04fd306cSNickeau const NAME = "raw"; 18*04fd306cSNickeau 19*04fd306cSNickeau 20*04fd306cSNickeau public static function createFromPath(WikiPath $wikiPath): FetcherRawLocalPath 21*04fd306cSNickeau { 22*04fd306cSNickeau $fetcherRaw = self::createEmpty(); 23*04fd306cSNickeau $fetcherRaw->setSourcePath($wikiPath); 24*04fd306cSNickeau return $fetcherRaw; 25*04fd306cSNickeau } 26*04fd306cSNickeau 27*04fd306cSNickeau /** 28*04fd306cSNickeau * Empty because a fetch is mostly build through an URL 29*04fd306cSNickeau * @return FetcherRawLocalPath 30*04fd306cSNickeau */ 31*04fd306cSNickeau public static function createEmpty(): FetcherRawLocalPath 32*04fd306cSNickeau { 33*04fd306cSNickeau return new FetcherRawLocalPath(); 34*04fd306cSNickeau } 35*04fd306cSNickeau 36*04fd306cSNickeau /** 37*04fd306cSNickeau * @throws ExceptionBadArgument 38*04fd306cSNickeau */ 39*04fd306cSNickeau public static function createLocalFromFetchUrl(Url $fetchUrl): FetcherRawLocalPath 40*04fd306cSNickeau { 41*04fd306cSNickeau $fetchRaw = FetcherRawLocalPath::createEmpty(); 42*04fd306cSNickeau $fetchRaw->buildFromUrl($fetchUrl); 43*04fd306cSNickeau return $fetchRaw; 44*04fd306cSNickeau } 45*04fd306cSNickeau 46*04fd306cSNickeau 47*04fd306cSNickeau /** 48*04fd306cSNickeau * @return Url - an URL to download the media 49*04fd306cSNickeau */ 50*04fd306cSNickeau function getFetchUrl(Url $url = null): Url 51*04fd306cSNickeau { 52*04fd306cSNickeau 53*04fd306cSNickeau $url = parent::getFetchUrl($url); 54*04fd306cSNickeau $this->addLocalPathParametersToFetchUrl($url, self::$MEDIA_QUERY_PARAMETER); 55*04fd306cSNickeau return $url; 56*04fd306cSNickeau 57*04fd306cSNickeau } 58*04fd306cSNickeau 59*04fd306cSNickeau /** 60*04fd306cSNickeau * @param TagAttributes $tagAttributes 61*04fd306cSNickeau * @return FetcherRawLocalPath 62*04fd306cSNickeau * @throws ExceptionBadArgument - if the media/id was not found 63*04fd306cSNickeau * @throws ExceptionBadSyntax 64*04fd306cSNickeau * @throws ExceptionNotExists 65*04fd306cSNickeau * @throws ExceptionNotFound 66*04fd306cSNickeau */ 67*04fd306cSNickeau public function buildFromTagAttributes(TagAttributes $tagAttributes): FetcherRawLocalPath 68*04fd306cSNickeau { 69*04fd306cSNickeau 70*04fd306cSNickeau $this->buildOriginalPathFromTagAttributes($tagAttributes); 71*04fd306cSNickeau parent::buildFromTagAttributes($tagAttributes); 72*04fd306cSNickeau return $this; 73*04fd306cSNickeau 74*04fd306cSNickeau } 75*04fd306cSNickeau 76*04fd306cSNickeau function getFetchPath(): LocalPath 77*04fd306cSNickeau { 78*04fd306cSNickeau return $this->getSourcePath()->toLocalPath(); 79*04fd306cSNickeau } 80*04fd306cSNickeau 81*04fd306cSNickeau 82*04fd306cSNickeau /** 83*04fd306cSNickeau * Buster for the {@link IFetcher} interface 84*04fd306cSNickeau * @throws ExceptionNotFound 85*04fd306cSNickeau */ 86*04fd306cSNickeau function getBuster(): string 87*04fd306cSNickeau { 88*04fd306cSNickeau return FileSystems::getCacheBuster($this->getSourcePath()); 89*04fd306cSNickeau } 90*04fd306cSNickeau 91*04fd306cSNickeau 92*04fd306cSNickeau public 93*04fd306cSNickeau function getFetcherName(): string 94*04fd306cSNickeau { 95*04fd306cSNickeau return self::NAME; 96*04fd306cSNickeau } 97*04fd306cSNickeau 98*04fd306cSNickeau public function getLabel(): string 99*04fd306cSNickeau { 100*04fd306cSNickeau $sourcePath = $this->getSourcePath(); 101*04fd306cSNickeau return ResourceName::getFromPath($sourcePath); 102*04fd306cSNickeau } 103*04fd306cSNickeau} 104