webserver/source.php (46 lines of code) (raw):

<?php include('vendor/autoload.php'); use Facebook\InstantArticles\Transformer\Transformer; use Facebook\InstantArticles\Elements\InstantArticle; use Facebook\InstantArticles\Elements\Header; function exception_error_handler($errno, $errstr, $errfile, $errline ) { // noop } set_error_handler("exception_error_handler"); try { // Read the URL parameter //---------------------- $url = $_GET['url']; $rules = $_POST['rules']; if (!$url || !$rules) { invalidIA(); } if (filter_var($url, FILTER_VALIDATE_URL) === FALSE) { invalidIA(); } $context_options = stream_context_create(array( "ssl"=>array( "verify_peer"=>false, "verify_peer_name"=>false, ), 'http'=>array( 'header'=>"User-Agent: facebookexternalhit/1.1\r\n" ), )); // Fetch the URL //-------------- $content = @file_get_contents($url, false, $context_options); if ($content === false) { invalidIA(); } // Load rules //----------- $transformer = new Transformer(); $transformer->loadRules($rules); // Transform //---------- $instant_article = InstantArticle::create(); $transformer->transformString($instant_article, $content); // Print source //------------- echo $instant_article->render(null, true); } catch (Exception $e) { echo $e->getMessage(); echo $stacktrace = $e->getTraceAsString(); die(); } function invalidIA() { echo 'Open an article and fully configure the <em>Article Structure</em>'; echo 'rule to see the source of your Instant Article here.'; die(); }