talk about features
[phancap.git] / www / get.php
index 5212e99420a974c3d61b62dd9bca354a7ec8e061..f78c3b5fef988653694e4c88d517d663f5e48b84 100644 (file)
@@ -1,8 +1,20 @@
 <?php
-namespace phancap;
 /**
- * Get a screenshot for a website.
+ * Create a website screenshot API
+ *
+ * PHP version 5
+ *
+ * @category  Tools
+ * @package   Phancap
+ * @author    Christian Weiske <cweiske@cweiske.de>
+ * @copyright 2014 Christian Weiske
+ * @license   http://www.gnu.org/licenses/agpl.html GNU AGPL v3
+ * @link      http://cweiske.de/phancap.htm
  */
+namespace phancap;
+
+header('HTTP/1.0 500 Internal Server Error');
+
 if (file_exists(__DIR__ . '/../src/phancap/Autoloader.php')) {
     include_once __DIR__ . '/../src/phancap/Autoloader.php';
     Autoloader::register();
@@ -10,15 +22,48 @@ if (file_exists(__DIR__ . '/../src/phancap/Autoloader.php')) {
     include_once 'phancap/Autoloader.php';
 }
 
+$config = new Config();
+$config->load();
+
 $options = new Options();
 try {
+    $options->setConfig($config);
     $options->parse($_GET);
 } catch (\InvalidArgumentException $e) {
     header('HTTP/1.0 400 Bad Request');
     header('Content-type: text/plain');
-    echo $e->getMessage();
+    echo $e->getMessage() . "\n";
     exit(1);
 }
 
-var_dump($options->values);
+$auth = new Authenticator();
+try {
+    $auth->authenticate($config);
+} catch (\Exception $e) {
+    header('HTTP/1.0 401 Unauthorized');
+    header('Content-type: text/plain');
+    echo $e->getMessage() . "\n";
+    exit(1);
+}
+
+$rep = new Repository();
+$rep->setConfig($config);
+try {
+    $img = $rep->getImage($options);
+    if ($config->redirect) {
+        header('HTTP/1.0 302 Found');
+        header('Expires: ' . date('r', $img->getExpiryDate($options)));
+        header('Location: ' . $img->getUrl());
+    } else {
+        header('Content-type: ' . $img->getMimeType());
+        readfile($img->getPath());
+    }
+} catch (\Exception $e) {
+    //FIXME: handle 404s and so properly
+    //FIXME: send out error image if images are preferred
+    header('HTTP/1.0 500 Internal Server error');
+    header('Content-type: text/plain');
+    echo $e->getMessage() . "\n";
+    exit(2);
+}
 ?>