]> git.immae.eu Git - github/shaarli/Shaarli.git/blobdiff - plugins/wallabag/WallabagInstance.php
Wallabag plugin improvement
[github/shaarli/Shaarli.git] / plugins / wallabag / WallabagInstance.php
diff --git a/plugins/wallabag/WallabagInstance.php b/plugins/wallabag/WallabagInstance.php
new file mode 100644 (file)
index 0000000..87352e6
--- /dev/null
@@ -0,0 +1,71 @@
+<?php\r
+\r
+/**\r
+ * Class WallabagInstance.\r
+ */\r
+class WallabagInstance\r
+{\r
+    /**\r
+     * @var array Static reference to differrent WB API versions.\r
+     *          - key: version ID, must match plugin settings.\r
+     *          - value: version name.\r
+     */\r
+    private static $wallabagVersions = array(\r
+        1 => '1.x',\r
+        2 => '2.x',\r
+    );\r
+\r
+    /**\r
+     * @var array Static reference to WB endpoint according to the API version.\r
+     *          - key: version name.\r
+     *          - value: endpoint.\r
+     */\r
+    private static $wallabagEndpoints = array(\r
+        '1.x' => '?plainurl=',\r
+        '2.x' => 'bookmarklet?url=',\r
+    );\r
+\r
+    /**\r
+     * @var string Wallabag user instance URL.\r
+     */\r
+    private $instanceUrl;\r
+\r
+    /**\r
+     * @var string Wallabag user instance API version.\r
+     */\r
+    private $apiVersion;\r
+\r
+    function __construct($instance, $version)\r
+    {\r
+        if ($this->isVersionAllowed($version)) {\r
+            $this->apiVersion = self::$wallabagVersions[$version];\r
+        } else {\r
+            // Default API version: 1.x.\r
+            $this->apiVersion = self::$wallabagVersions[1];\r
+        }\r
+\r
+        $this->instanceUrl = add_trailing_slash($instance);\r
+    }\r
+\r
+    /**\r
+     * Build the Wallabag URL to reach from instance URL and API version endpoint.\r
+     *\r
+     * @return string wallabag url.\r
+     */\r
+    public function getWallabagUrl()\r
+    {\r
+        return $this->instanceUrl . self::$wallabagEndpoints[$this->apiVersion];\r
+    }\r
+\r
+    /**\r
+     * Checks version configuration.\r
+     *\r
+     * @param mixed $version given version ID.\r
+     *\r
+     * @return bool true if it's valid, false otherwise.\r
+     */\r
+    private function isVersionAllowed($version)\r
+    {\r
+        return isset(self::$wallabagVersions[$version]);\r
+    }\r
+}\r