From: Antonio Ospite
Date: Sun, 2 Jan 2022 21:44:39 +0000 (+0100)
Subject: src/Tweeper.php: fix rendering Instagram images in some feed readers
X-Git-Url: https://git.ao2.it/tweeper.git/commitdiff_plain/6525c19868a0511abaaac9d2ba452ba640899209?ds=inline
src/Tweeper.php: fix rendering Instagram images in some feed readers
Instagram.com is using Cross Origin Resource Policy and this prevents
images in RSS items from being displayed in the Web view of some feed
readers like Liferea.
Add a function to generate Data URLs with base64 payloads and use that
for instagram images a s a workaround to fix rendering images in some
feed readers.
---
diff --git a/src/Tweeper.php b/src/Tweeper.php
index f79bb08..2d3870f 100644
--- a/src/Tweeper.php
+++ b/src/Tweeper.php
@@ -234,6 +234,34 @@ class Tweeper {
}
/**
+ * Generate a data URL.
+ */
+ public static function generateDataURL($url) {
+ $supported_content_types = [
+ "image/gif",
+ "image/jpeg",
+ "image/png",
+ ];
+
+ $url_info = Tweeper::getUrlInfo($url);
+ if (FALSE === $url_info) {
+ trigger_error("Failed to retrieve info for URL: " . $url, E_USER_WARNING);
+ return '';
+ }
+
+ $supported = in_array($url_info['content_type'], $supported_content_types);
+ if (!$supported) {
+ trigger_error("Unsupported data URL type \"" . $url_info['content_type'] . "\" for URL: " . $url_info['url'], E_USER_WARNING);
+ return '';
+ }
+
+ $base64Data = base64_encode(file_get_contents($url));
+ $dataURL = 'data: ' . $url_info['content_type'] . ';base64,' . $base64Data;
+
+ return $dataURL;
+ }
+
+ /**
* Mimic the message from libxml.c::php_libxml_ctx_error_level()
*/
private static function logXmlError($error) {
diff --git a/src/rss_converter_instagram.com.xsl b/src/rss_converter_instagram.com.xsl
index 855ce0b..71b60a7 100644
--- a/src/rss_converter_instagram.com.xsl
+++ b/src/rss_converter_instagram.com.xsl
@@ -66,6 +66,7 @@
+
-
@@ -108,7 +109,7 @@
-
+
]]>