diff --git a/src/FeedIo/FeedIo.php b/src/FeedIo/FeedIo.php index a5efde94..79bdeb96 100644 --- a/src/FeedIo/FeedIo.php +++ b/src/FeedIo/FeedIo.php @@ -15,6 +15,7 @@ use FeedIo\Reader\FixerSet; use FeedIo\Reader\FixerAbstract; use FeedIo\Rule\DateTimeBuilder; +use FeedIo\Rule\DateTimeBuilderInterface; use FeedIo\Adapter\ClientInterface; use FeedIo\Standard\Loader; use FeedIo\Async\Reader as AsyncReader; @@ -109,11 +110,11 @@ class FeedIo * @param \FeedIo\Adapter\ClientInterface $client * @param \Psr\Log\LoggerInterface $logger */ - public function __construct(ClientInterface $client, LoggerInterface $logger) + public function __construct(ClientInterface $client, LoggerInterface $logger, DateTimeBuilderInterface $dateTimeBuilder = null) { $this->client = $client; $this->logger = $logger; - $this->dateTimeBuilder = new DateTimeBuilder($logger); + $this->dateTimeBuilder = $dateTimeBuilder ?? new DateTimeBuilder($logger); $this->setReader(new Reader($client, $logger)); $this->loadCommonStandards(); $this->loadFixerSet(); diff --git a/src/FeedIo/Rule/DateTimeBuilder.php b/src/FeedIo/Rule/DateTimeBuilder.php index cc5cee11..8d8d1505 100644 --- a/src/FeedIo/Rule/DateTimeBuilder.php +++ b/src/FeedIo/Rule/DateTimeBuilder.php @@ -13,7 +13,7 @@ use Psr\Log\LoggerInterface; use Psr\Log\NullLogger; -class DateTimeBuilder +class DateTimeBuilder implements DateTimeBuilderInterface { /** * Supported date formats @@ -72,7 +72,7 @@ public function __construct(LoggerInterface $logger = null) * @param $dateFormat * @return DateTimeBuilder */ - public function addDateFormat(string $dateFormat) : DateTimeBuilder + public function addDateFormat(string $dateFormat) : DateTimeBuilderInterface { $this->dateFormats[] = $dateFormat; @@ -83,7 +83,7 @@ public function addDateFormat(string $dateFormat) : DateTimeBuilder * @param array $dateFormats * @return $this */ - public function setDateFormats(array $dateFormats) : DateTimeBuilder + public function setDateFormats(array $dateFormats) : DateTimeBuilderInterface { $this->dateFormats = $dateFormats; @@ -214,7 +214,6 @@ public function setTimezone(\DateTimeZone $timezone) : void $this->setServerTimezone($timezone); } - /** * @param $format * @param $string diff --git a/src/FeedIo/Rule/DateTimeBuilderInterface.php b/src/FeedIo/Rule/DateTimeBuilderInterface.php new file mode 100644 index 00000000..f3a90a40 --- /dev/null +++ b/src/FeedIo/Rule/DateTimeBuilderInterface.php @@ -0,0 +1,64 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FeedIo\Rule; + +interface DateTimeBuilderInterface +{ + + /** + * @param $dateFormat + * @return DateTimeBuilderInterface + */ + public function addDateFormat(string $dateFormat) : DateTimeBuilderInterface; + + /** + * @param array $dateFormats + * @return DateTimeBuilderInterface + */ + public function setDateFormats(array $dateFormats) : DateTimeBuilderInterface; + + /** + * @return string + */ + public function getLastGuessedFormat() : string; + + /** + * Tries to guess the date's format from the list + * @param string $date + * @return string|null date Format + */ + public function guessDateFormat(string $date) : ? string; + + /** + * Creates a DateTime instance for the given string. Default format is RFC2822 + * @param string $string + * @return \DateTime + */ + public function convertToDateTime(string $string) : \DateTime; + + /** + * @return \DateTimeZone + */ + public function getFeedTimezone() : ? \DateTimeZone; + + /** + * Specifies the feed's timezone. Do this it the timezone is missing + * + * @param \DateTimeZone $timezone + */ + public function setFeedTimezone(\DateTimeZone $timezone) : void; + + /** + * Resets feedTimezone to null. + */ + public function resetFeedTimezone() : void; +} +