--- /dev/null
+<?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