WallabagInstance.php 1.7 KB

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