[DownDetectorBridge] Add bridge for DownDetector, and all local variants. Fixes
#1339.
This commit is contained in:
parent
424075981f
commit
0b80f9d61c
1 changed files with 115 additions and 0 deletions
115
bridges/DownDetectorBridge.php
Normal file
115
bridges/DownDetectorBridge.php
Normal file
|
@ -0,0 +1,115 @@
|
|||
<?php
|
||||
class DownDetectorBridge extends BridgeAbstract {
|
||||
|
||||
const MAINTAINER = 'teromene';
|
||||
const NAME = 'DownDetector Bridge';
|
||||
const URI = 'https://downdetector.com/';
|
||||
const DESCRIPTION = 'Returns most recent downtimes from DownDetector';
|
||||
const CACHE_TIMEOUT = 300; // 5 min
|
||||
|
||||
const PARAMETERS = array(
|
||||
array(
|
||||
'country' => array(
|
||||
'type' => 'list',
|
||||
'name' => 'Country',
|
||||
'values' => array(
|
||||
'Argentina' => 'https://downdetector.com.ar',
|
||||
'Australia' => 'https://downdetector.com.au',
|
||||
'België' => 'https://allestoringen.be',
|
||||
'Brasil' => 'https://downdetector.com.br',
|
||||
'Canada' => 'https://downdetector.ca',
|
||||
'Chile' => 'https://downdetector.cl',
|
||||
'Colombia' => 'https://downdetector.com.co',
|
||||
'Danmark' => 'https://downdetector.dk',
|
||||
'Deutschland' => 'https://allestörungen.de',
|
||||
'Ecuador' => 'https://downdetector.ec',
|
||||
'España' => 'https://downdetector.es',
|
||||
'France' => 'https://downdetector.fr',
|
||||
'Hong Kong' => 'https://downdetector.hk',
|
||||
'Hrvatska' => 'https://downdetector.hr',
|
||||
'India' => 'https://downdetector.in',
|
||||
'Indonesia' => 'https://downdetector.id',
|
||||
'Ireland' => 'https://downdetector.ie',
|
||||
'Italia' => 'https://downdetector.it',
|
||||
'Magyarország' => 'https://downdetector.hu',
|
||||
'Malaysia' => 'https://downdetector.my',
|
||||
'México' => 'https://downdetector.mx',
|
||||
'Nederland' => 'https://allestoringen.nl',
|
||||
'New Zealand' => 'https://downdetector.co.nz',
|
||||
'Norge' => 'https://downdetector.no',
|
||||
'Pakistan' => 'https://downdetector.pk',
|
||||
'Perú' => 'https://downdetector.pe',
|
||||
'Pilipinas' => 'https://downdetector.ph',
|
||||
'Polska' => 'https://downdetector.pl',
|
||||
'Portugal' => 'https://downdetector.pt',
|
||||
'România' => 'https://downdetector.ro',
|
||||
'Schweiz' => 'https://allestörungen.ch',
|
||||
'Singapore' => 'https://downdetector.sg',
|
||||
'Slovensko' => 'https://downdetector.sk',
|
||||
'South Africa' => 'https://downdetector.co.za',
|
||||
'Suomi' => 'https://downdetector.fi',
|
||||
'Sverige' => 'https://downdetector.se',
|
||||
'Türkiye' => 'https://downdetector.web.tr',
|
||||
'UAE' => 'https://downdetector.ae',
|
||||
'UK' => 'https://downdetector.co.uk',
|
||||
'United States' => 'https://downdetector.com',
|
||||
'Österreich' => 'https://allestörungen.at',
|
||||
'Česko' => 'https://downdetector.cz',
|
||||
'Ελλάς' => 'https://downdetector.gr',
|
||||
'Россия' => 'https://downdetector.ru',
|
||||
'日本' => 'https://downdetector.jp'
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
const API_TOKEN = 'YW5kcm9pZF9hcGlfdXNlcl92MTpxTkRyenZSczY1bW1ESlk0ZVNIWmtobFY=';
|
||||
|
||||
public function collectData(){
|
||||
|
||||
$html = getSimpleHTMLDOM($this->getURI() . '/archive/')
|
||||
or returnClientError('Impossible to query website !.');
|
||||
|
||||
$table = $html->find('table.table-striped', 0);
|
||||
|
||||
$maxCount = 10;
|
||||
foreach ($table->find('tr') as $downEvent) {
|
||||
$downLink = $downEvent->find('td', 1)->find('a', 1);
|
||||
$item = $this->collectArticleData($downLink->getAttribute('href'));
|
||||
$this->items[] = $item;
|
||||
if($maxCount == 0) break;
|
||||
$maxCount -= 1;
|
||||
}
|
||||
}
|
||||
|
||||
public function collectArticleData($link) {
|
||||
|
||||
preg_match('/\/([0-9]{3,})/', $link, $matches);
|
||||
$eventId = $matches[1];
|
||||
|
||||
$header = array(
|
||||
'Authorization: Basic ' . self::API_TOKEN
|
||||
);
|
||||
|
||||
$article = getContents('https://downdetectorapi.com/v1/events/' . $eventId, $header)
|
||||
or returnServerError('Could not request ARTE.');
|
||||
$article_json = json_decode($article);
|
||||
//die($this->getURI() . $link);
|
||||
$item = array();
|
||||
$item['uri'] = $this->getURI() . $link;
|
||||
$item['id'] = $article_json->id;
|
||||
$item['title'] = $article_json->title;
|
||||
$item['content'] = $article_json->body;
|
||||
$item['timestamp'] = (new DateTime($article_json->started_at))->getTimestamp();
|
||||
return $item;
|
||||
|
||||
}
|
||||
|
||||
public function getURI() {
|
||||
if($this->getInput('country') !== null) {
|
||||
return $this->getInput('country');
|
||||
} else {
|
||||
return self::URI;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue