Extracted fromArray into new function
This commit is contained in:
parent
9b42b486ae
commit
aaadcf17b6
@ -30,7 +30,7 @@ class PodcastData {
|
|||||||
$this->fetchedAtUnix = $fetchedAtUnix;
|
$this->fetchedAtUnix = $fetchedAtUnix;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function parseXml(string $xmlString): PodcastData {
|
public static function parseRssXml(string $xmlString, ?int $fetchedAtUnix = null): PodcastData {
|
||||||
$xml = new SimpleXMLElement($xmlString);
|
$xml = new SimpleXMLElement($xmlString);
|
||||||
$channel = $xml->channel;
|
$channel = $xml->channel;
|
||||||
return new PodcastData(
|
return new PodcastData(
|
||||||
@ -41,7 +41,7 @@ class PodcastData {
|
|||||||
image:
|
image:
|
||||||
self::getXPathContent($xml, '/rss/channel/image/url')
|
self::getXPathContent($xml, '/rss/channel/image/url')
|
||||||
?? self::getXPathAttribute($xml, '/rss/channel/itunes:image/@href'),
|
?? self::getXPathAttribute($xml, '/rss/channel/itunes:image/@href'),
|
||||||
fetchedAtUnix: (new DateTime())->getTimestamp(),
|
fetchedAtUnix: $fetchedAtUnix ?? (new DateTime())->getTimestamp(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -103,10 +103,16 @@ class PodcastData {
|
|||||||
return $this->fetchedAtUnix;
|
return $this->fetchedAtUnix;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
public function __toString() : String {
|
public function __toString() : String {
|
||||||
return $this->title;
|
return $this->title;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
public function toArray(): array {
|
public function toArray(): array {
|
||||||
return
|
return
|
||||||
[
|
[
|
||||||
@ -118,5 +124,19 @@ class PodcastData {
|
|||||||
'fetchedAtUnix' => $this->fetchedAtUnix,
|
'fetchedAtUnix' => $this->fetchedAtUnix,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return PodcastData
|
||||||
|
*/
|
||||||
|
public static function fromArray(array $data): PodcastData {
|
||||||
|
return new PodcastData(
|
||||||
|
title: $data['title'],
|
||||||
|
author: $data['author'],
|
||||||
|
link: $data['link'],
|
||||||
|
description: $data['description'],
|
||||||
|
image: $data['image'],
|
||||||
|
fetchedAtUnix: $data['fetchedAtUnix'],
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ class PodcastDataCache {
|
|||||||
throw new \ErrorException("Podcast RSS URL returned non-2xx status code: $statusCode");
|
throw new \ErrorException("Podcast RSS URL returned non-2xx status code: $statusCode");
|
||||||
}
|
}
|
||||||
$body = $resp->getBody();
|
$body = $resp->getBody();
|
||||||
return PodcastData::parseXml($body);
|
return PodcastData::parseRssXml($body);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function tryGetCachedPodcastData(string $url): ?PodcastData {
|
public function tryGetCachedPodcastData(string $url): ?PodcastData {
|
||||||
@ -50,14 +50,7 @@ class PodcastDataCache {
|
|||||||
if (!$oldData) {
|
if (!$oldData) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return new PodcastData(
|
return PodcastData::fromArray($oldData);
|
||||||
title: $oldData['title'],
|
|
||||||
author: $oldData['author'],
|
|
||||||
link: $oldData['link'],
|
|
||||||
description: $oldData['description'],
|
|
||||||
image: $oldData['image'],
|
|
||||||
fetchedAtUnix: $oldData['fetchedAtUnix'],
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function trySetCachedPodcastData(string $url, PodcastData $data) {
|
public function trySetCachedPodcastData(string $url, PodcastData $data) {
|
||||||
|
Loading…
Reference in New Issue
Block a user