From: Antonio Ospite <ao2@ao2.it>
Date: Mon, 23 May 2016 13:32:27 +0000 (+0200)
Subject: tweeper.php: fix a problem with https URLs ending up in the enclosure element
X-Git-Tag: v0.6~4
X-Git-Url: https://git.ao2.it/tweeper.git/commitdiff_plain/60ffa4f7f61cb8c815244644c633d84646d21104

tweeper.php: fix a problem with https URLs ending up in the enclosure element

When the remote host forces every URLs to be redirected to https, the
info returned by Tweeper::getUrlInfo() would contain an https URL, which
will end up being used in the "url" attribute of the enclosure element,
and this is invalid according to the RSS specification.

So make sure that an http URL is actually used for the "url" attribute.
---

diff --git a/tweeper.php b/tweeper.php
index f7e0a88..94ea05f 100644
--- a/tweeper.php
+++ b/tweeper.php
@@ -139,11 +139,7 @@ class Tweeper {
       "video/ogg",
     );
 
-    // The RSS specification says that the enclosure element URL must be http.
-    // See http://sourceforge.net/p/feedvalidator/bugs/72/
-    $http_url = preg_replace("/^https/", "http", $url);
-
-    $url_info = Tweeper::getUrlInfo($http_url);
+    $url_info = Tweeper::getUrlInfo($url);
 
     $supported = in_array($url_info['content_type'], $supported_content_types);
     if (!$supported) {
@@ -151,9 +147,13 @@ class Tweeper {
       return '';
     }
 
+    // The RSS specification says that the enclosure element URL must be http.
+    // See http://sourceforge.net/p/feedvalidator/bugs/72/
+    $http_url = preg_replace("/^https/", "http", $url_info['url']);
+
     $dom = new DOMDocument();
     $enc = $dom->createElement('enclosure');
-    $enc->setAttribute('url', $url_info['url']);
+    $enc->setAttribute('url', $http_url);
     $enc->setAttribute('length', $url_info['download_content_length']);
     $enc->setAttribute('type', $url_info['content_type']);