[NovelUpdatesBridge] use 'name' parameter instead of full URI
This breaks compatibility with previous versions of NoveUpdatesBridge. Bridges should never use full URIs as inputs since their validation will always be more complicated, hence prone to security issues, than rebuilding a clean URI from simple validated inputs. Signed-off-by: Pierre Mazière <pierre.maziere@gmx.com>
This commit is contained in:
parent
d60220769e
commit
0c139941d9
1 changed files with 16 additions and 13 deletions
|
@ -7,23 +7,22 @@ class NovelUpdatesBridge extends BridgeAbstract{
|
|||
const DESCRIPTION = "Returns releases from Novel Updates";
|
||||
const PARAMETERS = array( array(
|
||||
'n'=>array(
|
||||
'name'=>'Novel URL',
|
||||
'patterns'=>'http:\/\/www.novelupdates.com\/.*',
|
||||
'name'=>'Novel name as found in the url',
|
||||
'exampleValue'=>'spirit-realm',
|
||||
'required'=>true
|
||||
)
|
||||
));
|
||||
|
||||
private $seriesTitle='';
|
||||
|
||||
public function getURI(){
|
||||
return static::URI.'/series/'.$this->getInput('n').'/';
|
||||
}
|
||||
|
||||
public function collectData(){
|
||||
$thread = parse_url($this->getInput('n'))
|
||||
or $this->returnClientError('This URL seems malformed, please check it.');
|
||||
if($thread['host'] !== 'www.novelupdates.com')
|
||||
$this->returnClientError('NovelUpdates URL only.');
|
||||
if(strpos($thread['path'], 'series/') === FALSE)
|
||||
$this->returnClientError('You must specify the novel URL.');
|
||||
$url = self::URI.$thread['path'].'';
|
||||
$fullhtml = $this->getSimpleHTMLDOM($url) or $this->returnServerError("Could not request NovelUpdates, novel not found");
|
||||
$fullhtml = $this->getSimpleHTMLDOM($this->getURI())
|
||||
or $this->returnServerError('Could not request NovelUpdates, novel "'.$this->getInput('n').'" not found');
|
||||
|
||||
$this->seriesTitle = $fullhtml->find('h4.seriestitle', 0)->plaintext;
|
||||
// dirty fix for nasty simpledom bug: https://github.com/sebsauvage/rss-bridge/issues/259
|
||||
// forcefully removes tbody
|
||||
|
@ -37,13 +36,17 @@ class NovelUpdatesBridge extends BridgeAbstract{
|
|||
$item['title'] = $element->find('td', 2)->find('a', 0)->plaintext;
|
||||
$item['team'] = $element->find('td', 1)->innertext;
|
||||
$item['timestamp'] = strtotime($element->find('td', 0)->plaintext);
|
||||
$item['content'] = '<a href="'.$item['uri'].'">'.$this->seriesTitle.' - '.$item['title'].'</a> by '.$item['team'].'<br><a href="'.$item['uri'].'">'.$fullhtml->find('div.seriesimg', 0)->innertext.'</a>';
|
||||
$item['content'] =
|
||||
'<a href="'.$item['uri'].'">'
|
||||
.$this->seriesTitle.' - '.$item['title']
|
||||
.'</a> by '.$item['team'].'<br>'
|
||||
.'<a href="'.$item['uri'].'">'.$fullhtml->find('div.seriesimg', 0)->innertext.'</a>';
|
||||
$this->items[] = $item;
|
||||
}
|
||||
}
|
||||
|
||||
public function getName(){
|
||||
return (!empty($this->seriesTitle) ? $this->seriesTitle.' - ' : '') .'Novel Updates';
|
||||
return $this->seriesTitle. ' - ' . static::NAME;
|
||||
}
|
||||
|
||||
public function getCacheDuration(){
|
||||
|
|
Loading…
Reference in a new issue