From f907de7cf25707848bee5c637dc440cb26714ffd Mon Sep 17 00:00:00 2001 From: Antonio Ospite Date: Fri, 16 Nov 2018 23:06:38 +0100 Subject: [PATCH] src/Tweeper.php: make enclosure validate when there is no Content-Length 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 --- src/Tweeper.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Tweeper.php b/src/Tweeper.php index 8fda9b1..09bd7cc 100644 --- a/src/Tweeper.php +++ b/src/Tweeper.php @@ -206,10 +206,17 @@ class Tweeper { // 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; -- 2.1.4