*/
class Tweeper {
- private static $userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:60.0) Gecko/20100101 Firefox/60.0";
+ private static $userAgent = "Mozilla/5.0";
private static $maxConnectionTimeout = 5;
private static $maxConnectionRetries = 5;
* Enables showing multimedia content (images, videos) directly in the
* item description (enabled by default). Only some stylesheets supports
* this functionality (twitter, instagram, dilbert).
+ * @param bool $verbose_output
+ * Enables showing non-fatal errors like XML parsing errors.
*/
- public function __construct($generate_enclosure = FALSE, $show_usernames = TRUE, $show_multimedia = TRUE) {
+ public function __construct($generate_enclosure = FALSE, $show_usernames = TRUE, $show_multimedia = TRUE, $verbose_output = TRUE) {
$this->generate_enclosure = $generate_enclosure;
$this->show_usernames = $show_usernames;
$this->show_multimedia = $show_multimedia;
+ $this->verbose_output = $verbose_output;
}
/**
CURLOPT_CONNECTTIMEOUT => Tweeper::$maxConnectionTimeout,
// Follow http redirects to get the real URL.
CURLOPT_FOLLOWLOCATION => TRUE,
+ CURLOPT_COOKIEFILE => "",
CURLOPT_RETURNTRANSFER => TRUE,
- CURLOPT_SSL_VERIFYHOST => FALSE,
- CURLOPT_SSL_VERIFYPEER => FALSE,
CURLOPT_HTTPHEADER => array('Accept-language: en'),
CURLOPT_USERAGENT => Tweeper::$userAgent,
));
// Follow http redirects to get the real URL.
CURLOPT_FOLLOWLOCATION => TRUE,
CURLOPT_RETURNTRANSFER => TRUE,
- CURLOPT_SSL_VERIFYHOST => FALSE,
- CURLOPT_SSL_VERIFYPEER => FALSE,
CURLOPT_USERAGENT => Tweeper::$userAgent,
));
// See http://sourceforge.net/p/feedvalidator/bugs/72/
$http_url = preg_replace("/^https/", "http", $url_info['url']);
+ // When the server does not provide a Content-Length header,
+ // curl_getinfo() would return a negative value for
+ // "download_content_length", however RSS recommends to use 0 when the
+ // enclosure's size cannot be determined.
+ // See: https://www.feedvalidator.org/docs/error/UseZeroForUnknown.html
+ $length = max($url_info['download_content_length'], 0);
+
$dom = new DOMDocument();
$enc = $dom->createElement('enclosure');
$enc->setAttribute('url', $http_url);
- $enc->setAttribute('length', $url_info['download_content_length']);
+ $enc->setAttribute('length', $length);
$enc->setAttribute('type', $url_info['content_type']);
return $enc;
$xmlDoc->loadHTML($html);
}
- foreach (libxml_get_errors() as $xml_error) {
- Tweeper::logXmlError($xml_error);
+ if ($this->verbose_output) {
+ foreach (libxml_get_errors() as $xml_error) {
+ Tweeper::logXmlError($xml_error);
+ }
}
libxml_clear_errors();
libxml_use_internal_errors($xml_errors_value);