Tweeper.php: allow to pass parameters to Tweeper::tweep()
authorAntonio Ospite <ao2@ao2.it>
Thu, 9 Feb 2017 15:48:55 +0000 (16:48 +0100)
committerAntonio Ospite <ao2@ao2.it>
Thu, 9 Feb 2017 17:24:06 +0000 (18:24 +0100)
This allows to call Tweeper::tweep() on file:// URLs which can make
development faster.

src/Tweeper.php

index 93ac9e0..8ac2fe3 100644 (file)
@@ -315,21 +315,30 @@ class Tweeper {
   /**
    * Convert the site content to RSS.
    */
-  public function tweep($src_url) {
+  public function tweep($src_url, $host=NULL, $validate_scheme=TRUE) {
     $url = parse_url($src_url);
-    if (FALSE === $url || empty($url["host"])) {
+    if (FALSE === $url) {
       trigger_error("Invalid URL: $src_url", E_USER_ERROR);
       return NULL;
     }
 
-    $scheme = $url["scheme"];
-    if (!in_array($scheme, array("http", "https"))) {
-      trigger_error("unsupported scheme: $scheme", E_USER_ERROR);
-      return NULL;
+    if (TRUE === $validate_scheme) {
+      $scheme = $url["scheme"];
+      if (!in_array($scheme, array("http", "https"))) {
+        trigger_error("unsupported scheme: $scheme", E_USER_ERROR);
+        return NULL;
+      }
     }
 
-    // Strip the leading www. to be more forgiving on input URLs.
-    $host = preg_replace('/^www\./', '', $url["host"]);
+    // if the host is not given derive it from the URL
+    if (NULL === $host) {
+      if (empty($url["host"])) {
+        trigger_error("Invalid host in URL: $src_url", E_USER_ERROR);
+        return NULL;
+      }
+      // Strip the leading www. to be more forgiving on input URLs.
+      $host = preg_replace('/^www\./', '', $url["host"]);
+    }
 
     $xsltProcessor = $this->loadStylesheet($host);
     if (NULL === $xsltProcessor) {