src/Tweeper.php: make enclosure validate when there is no Content-Length
[tweeper.git] / tweeper.php
index ff98ab7..2d5017e 100644 (file)
@@ -1,9 +1,10 @@
 <?php
 <?php
+
 /**
  * @file
  * Tweeper - a Twitter to RSS web scraper.
  *
 /**
  * @file
  * Tweeper - a Twitter to RSS web scraper.
  *
- * Copyright (C) 2013-2016  Antonio Ospite <ao2@ao2.it>
+ * Copyright (C) 2013-2018  Antonio Ospite <ao2@ao2.it>
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -37,10 +38,10 @@ function is_cli() {
  */
 function usage($argv) {
   if (is_cli()) {
  */
 function usage($argv) {
   if (is_cli()) {
-    $usage = "{$argv[0]} [-e|-h|--help] <src_url>\n";
+    $usage = "{$argv[0]} [-e|-m <0|1>|-u <0|1>|-h|--help] <src_url>\n";
   }
   else {
   }
   else {
-    $usage = htmlentities("{$_SERVER['SCRIPT_NAME']}?src_url=<src_url>&generate_enclosure=<0|1>");
+    $usage = htmlentities("{$_SERVER['SCRIPT_NAME']}?src_url=<src_url>&generate_enclosure=<0|1>&show_usernames=<0|1>&show_multimedia=<0|1>");
   }
 
   return "usage: $usage";
   }
 
   return "usage: $usage";
@@ -52,19 +53,41 @@ function usage($argv) {
 function parse_options_cli($argv, $argc) {
   $options = array(
     'generate_enclosure' => FALSE,
 function parse_options_cli($argv, $argc) {
   $options = array(
     'generate_enclosure' => FALSE,
+    'show_usernames' => TRUE,
+    'show_multimedia' => TRUE,
   );
 
   if ($argc < 2) {
     return $options;
   }
 
   );
 
   if ($argc < 2) {
     return $options;
   }
 
-  $cli_options = getopt("eh", array("help"));
+  $cli_options = getopt("em:u:h", array("help"));
   foreach ($cli_options as $opt => $val) {
     switch ($opt) {
       case 'e':
         $options['generate_enclosure'] = TRUE;
         break;
 
   foreach ($cli_options as $opt => $val) {
     switch ($opt) {
       case 'e':
         $options['generate_enclosure'] = TRUE;
         break;
 
+      case 'm':
+        $ret = filter_var($val, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
+        if (NULL === $ret) {
+          fwrite(STDERR, "Invalid argument for the -m option.\n");
+          fwrite(STDERR, usage($argv));
+          exit(1);
+        }
+        $options['show_multimedia'] = $val;
+        break;
+
+      case 'u':
+        $ret = filter_var($val, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
+        if (NULL === $ret) {
+          fwrite(STDERR, "Invalid argument for the -u option.\n");
+          fwrite(STDERR, usage($argv));
+          exit(1);
+        }
+        $options['show_usernames'] = $val;
+        break;
+
       case 'h':
       case 'help':
         echo usage($argv);
       case 'h':
       case 'help':
         echo usage($argv);
@@ -76,7 +99,9 @@ function parse_options_cli($argv, $argc) {
     }
   }
 
     }
   }
 
-  $options['src_url'] = $argv[count($cli_options) + 1];
+  // For now assume that the URL is the lest argument, in the future we could
+  // switch to PHP >= 7.1 and use the $optind argument of getopt().
+  $options['src_url'] = array_pop($argv);
 
   return $options;
 }
 
   return $options;
 }
@@ -87,6 +112,8 @@ function parse_options_cli($argv, $argc) {
 function parse_options_query_string() {
   $options = array(
     'generate_enclosure' => FALSE,
 function parse_options_query_string() {
   $options = array(
     'generate_enclosure' => FALSE,
+    'show_usernames' => TRUE,
+    'show_multimedia' => TRUE,
   );
 
   if (isset($_GET['src_url'])) {
   );
 
   if (isset($_GET['src_url'])) {
@@ -97,6 +124,14 @@ function parse_options_query_string() {
     $options['generate_enclosure'] = $_GET['generate_enclosure'] == 1;
   }
 
     $options['generate_enclosure'] = $_GET['generate_enclosure'] == 1;
   }
 
+  if (isset($_GET['show_multimedia'])) {
+    $options['show_multimedia'] = $_GET['show_multimedia'] != 0;
+  }
+
+  if (isset($_GET['show_usernames'])) {
+    $options['show_usernames'] = $_GET['show_usernames'] != 0;
+  }
+
   return $options;
 }
 
   return $options;
 }
 
@@ -114,7 +149,7 @@ if (!isset($options['src_url'])) {
   exit(1);
 }
 
   exit(1);
 }
 
-$tweeper = new Tweeper($options['generate_enclosure']);
+$tweeper = new Tweeper($options['generate_enclosure'], $options['show_usernames'], $options['show_multimedia']);
 $output = $tweeper->tweep($options['src_url']);
 if (is_null($output)) {
   exit(1);
 $output = $tweeper->tweep($options['src_url']);
 if (is_null($output)) {
   exit(1);