]> git.immae.eu Git - github/shaarli/Shaarli.git/blame - plugins/wallabag/WallabagInstance.php
namespacing: add plugin tests to \Shaarli\Plugin\[...]
[github/shaarli/Shaarli.git] / plugins / wallabag / WallabagInstance.php
CommitLineData
c0a50f36 1<?php
95854417 2namespace Shaarli\Plugin\Wallabag;
c0a50f36
A
3
4/**
5 * Class WallabagInstance.
6 */
7class WallabagInstance
8{
9 /**
10 * @var array Static reference to differrent WB API versions.
11 * - key: version ID, must match plugin settings.
12 * - value: version name.
13 */
14 private static $wallabagVersions = array(
15 1 => '1.x',
16 2 => '2.x',
17 );
18
19 /**
20 * @var array Static reference to WB endpoint according to the API version.
21 * - key: version name.
22 * - value: endpoint.
23 */
24 private static $wallabagEndpoints = array(
25 '1.x' => '?plainurl=',
26 '2.x' => 'bookmarklet?url=',
27 );
28
29 /**
30 * @var string Wallabag user instance URL.
31 */
32 private $instanceUrl;
33
34 /**
35 * @var string Wallabag user instance API version.
36 */
37 private $apiVersion;
38
93b1fe54 39 public function __construct($instance, $version)
c0a50f36
A
40 {
41 if ($this->isVersionAllowed($version)) {
42 $this->apiVersion = self::$wallabagVersions[$version];
43 } else {
44 // Default API version: 1.x.
45 $this->apiVersion = self::$wallabagVersions[1];
46 }
47
48 $this->instanceUrl = add_trailing_slash($instance);
49 }
50
51 /**
52 * Build the Wallabag URL to reach from instance URL and API version endpoint.
53 *
54 * @return string wallabag url.
55 */
56 public function getWallabagUrl()
57 {
58 return $this->instanceUrl . self::$wallabagEndpoints[$this->apiVersion];
59 }
60
61 /**
62 * Checks version configuration.
63 *
64 * @param mixed $version given version ID.
65 *
66 * @return bool true if it's valid, false otherwise.
67 */
68 private function isVersionAllowed($version)
69 {
70 return isset(self::$wallabagVersions[$version]);
71 }
72}