X-Git-Url: https://git.ao2.it/tweeper.git/blobdiff_plain/d5cf35e48bf2644118ede9b58f99e200e420b481..6525c19868a0511abaaac9d2ba452ba640899209:/src/Tweeper.php?ds=inline diff --git a/src/Tweeper.php b/src/Tweeper.php index de1f474..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) { @@ -312,13 +340,11 @@ class Tweeper { $data = json_decode($matches[1], $assoc = TRUE); - // The "qe" object contains elements which will result in invalid XML - // element names, so remove it. + // Remove items that may contain elements which can result in invalid XML + // element names (for example names starting with a number). unset($data["qe"]); - - // The "knobs" object contains elements with undefined namespaces, so - // remove it to silence an error message. - unset($data["knobs"]); + unset($data["knobx"]); + unset($data["to_cache"]); // Stop here in case Instagram redirected to the login page, this can // happen when too many consecutive requests have been made from the same