diff options
author | Johannes Schauer Marin Rodrigues <josch@debian.org> | 2022-01-21 21:54:19 +0100 |
---|---|---|
committer | Johannes Schauer Marin Rodrigues <josch@debian.org> | 2022-01-21 21:54:19 +0100 |
commit | abd4361bafba7f3751310d0e3066c066f480afb1 (patch) | |
tree | 1e127fe1201f20ad0c533e3190e7a7dce84c5bed /bridges/Formula1Bridge.php | |
parent | daeb2c0913653d197fad2a75010cfc6034c6a9e8 (diff) |
New upstream version 2022-01-20+dfsg1
Diffstat (limited to 'bridges/Formula1Bridge.php')
-rw-r--r-- | bridges/Formula1Bridge.php | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/bridges/Formula1Bridge.php b/bridges/Formula1Bridge.php new file mode 100644 index 0000000..e34c341 --- /dev/null +++ b/bridges/Formula1Bridge.php @@ -0,0 +1,68 @@ +<?php +class Formula1Bridge extends BridgeAbstract { + const NAME = 'Formula1 Bridge'; + const URI = 'https://formula1.com/'; + const DESCRIPTION = 'Returns latest official Formula 1 news'; + const MAINTAINER = 'AxorPL'; + + const API_KEY = 'qPgPPRJyGCIPxFT3el4MF7thXHyJCzAP'; + const API_URL = 'https://api.formula1.com/v1/editorial/articles?limit=%u'; + + const ARTICLE_AUTHOR = 'Formula 1'; + const ARTICLE_HTML = '<p>%s</p><a href="%s" target="_blank"><img src="%s" alt="%s" title="%s"></a>'; + const ARTICLE_URL = 'https://formula1.com/en/latest/article.%s.%s.html'; + + const LIMIT_MIN = 1; + const LIMIT_DEFAULT = 10; + const LIMIT_MAX = 100; + + const PARAMETERS = array( + array( + 'limit' => array( + 'name' => 'Limit', + 'type' => 'number', + 'required' => false, + 'title' => 'Number of articles to return', + 'exampleValue' => self::LIMIT_DEFAULT, + 'defaultValue' => self::LIMIT_DEFAULT + ) + ) + ); + + public function collectData() { + $limit = $this->getInput('limit') ?: self::LIMIT_DEFAULT; + $limit = min(self::LIMIT_MAX, max(self::LIMIT_MIN, $limit)); + $url = sprintf(self::API_URL, $limit); + + $json = json_decode(getContents($url, array('apikey: ' . self::API_KEY))); + if(property_exists($json, 'error')) { + returnServerError($json->message); + } + $list = $json->items; + + foreach($list as $article) { + if(property_exists($article->thumbnail, 'caption')) { + $caption = $article->thumbnail->caption; + } else { + $caption = $article->thumbnail->image->title; + } + + $item = array(); + $item['uri'] = sprintf(self::ARTICLE_URL, $article->slug, $article->id); + $item['title'] = $article->title; + $item['timestamp'] = $article->updatedAt; + $item['author'] = self::ARTICLE_AUTHOR; + $item['enclosures'] = array($article->thumbnail->image->url); + $item['uid'] = $article->id; + $item['content'] = sprintf( + self::ARTICLE_HTML, + $article->metaDescription, + $item['uri'], + $item['enclosures'][0], + $caption, + $caption + ); + $this->items[] = $item; + } + } +} |