diff --git a/collabora_online.services.yml b/collabora_online.services.yml index b548f9b3..a630a6ac 100644 --- a/collabora_online.services.yml +++ b/collabora_online.services.yml @@ -4,5 +4,7 @@ services: logger.channel.collabora_online: parent: logger.channel_base arguments: ['cool'] - Drupal\collabora_online\Cool\CollaboraDiscoveryFetcher: { } - Drupal\collabora_online\Cool\CollaboraDiscovery: { } + Drupal\collabora_online\Cool\CollaboraDiscoveryFetcherInterface: + class: Drupal\collabora_online\Cool\CollaboraDiscoveryFetcher + Drupal\collabora_online\Cool\CollaboraDiscoveryInterface: + class: Drupal\collabora_online\Cool\CollaboraDiscovery diff --git a/src/Controller/ViewerController.php b/src/Controller/ViewerController.php index acee9ab8..fd43cec7 100644 --- a/src/Controller/ViewerController.php +++ b/src/Controller/ViewerController.php @@ -14,7 +14,7 @@ namespace Drupal\collabora_online\Controller; -use Drupal\collabora_online\Cool\CollaboraDiscovery; +use Drupal\collabora_online\Cool\CollaboraDiscoveryInterface; use Drupal\collabora_online\Cool\CoolUtils; use Drupal\collabora_online\Exception\CollaboraNotAvailableException; use Drupal\Core\Controller\ControllerBase; @@ -32,13 +32,13 @@ class ViewerController extends ControllerBase { /** * The controller constructor. * - * @param \Drupal\collabora_online\Cool\CollaboraDiscovery $discovery + * @param \Drupal\collabora_online\Cool\CollaboraDiscoveryInterface $discovery * Service to fetch a WOPI client URL. * @param \Drupal\Core\Render\RendererInterface $renderer * The renderer service. */ public function __construct( - protected readonly CollaboraDiscovery $discovery, + protected readonly CollaboraDiscoveryInterface $discovery, protected readonly RendererInterface $renderer, ) {} diff --git a/src/Cool/CollaboraDiscovery.php b/src/Cool/CollaboraDiscovery.php index 2f761e4d..e11adb2e 100644 --- a/src/Cool/CollaboraDiscovery.php +++ b/src/Cool/CollaboraDiscovery.php @@ -19,30 +19,20 @@ /** * Service to get a WOPI client url for a given MIME type. */ -class CollaboraDiscovery { +class CollaboraDiscovery implements CollaboraDiscoveryInterface { /** * Constructor. * - * @param \Drupal\collabora_online\Cool\CollaboraDiscoveryFetcher $discoveryFetcher + * @param \Drupal\collabora_online\Cool\CollaboraDiscoveryFetcherInterface $discoveryFetcher * Service to load the discovery.xml from the Collabora server. */ public function __construct( - protected readonly CollaboraDiscoveryFetcher $discoveryFetcher, + protected readonly CollaboraDiscoveryFetcherInterface $discoveryFetcher, ) {} /** - * Gets the URL for the WOPI client. - * - * @param string $mimetype - * Mime type for which to get the WOPI client url. - * This refers to config entries in the discovery.xml file. - * - * @return string - * The WOPI client url. - * - * @throws \Drupal\collabora_online\Exception\CollaboraNotAvailableException - * The client url cannot be retrieved. + * {@inheritdoc} */ public function getWopiClientURL(string $mimetype = 'text/plain'): string { $xml = $this->discoveryFetcher->getDiscoveryXml(); diff --git a/src/Cool/CollaboraDiscoveryFetcher.php b/src/Cool/CollaboraDiscoveryFetcher.php index 600893ef..290647b2 100644 --- a/src/Cool/CollaboraDiscoveryFetcher.php +++ b/src/Cool/CollaboraDiscoveryFetcher.php @@ -25,7 +25,7 @@ /** * Service to load the discovery.xml from the Collabora server. */ -class CollaboraDiscoveryFetcher { +class CollaboraDiscoveryFetcher implements CollaboraDiscoveryFetcherInterface { /** * Constructor. @@ -45,13 +45,7 @@ public function __construct( ) {} /** - * Gets the contents of discovery.xml from the Collabora server. - * - * @return string - * The full contents of discovery.xml. - * - * @throws \Drupal\collabora_online\Exception\CollaboraNotAvailableException - * The client url cannot be retrieved. + * {@inheritdoc} */ public function getDiscoveryXml(): string { $discovery_url = $this->getWopiClientServerBaseUrl() . '/hosting/discovery'; diff --git a/src/Cool/CollaboraDiscoveryFetcherInterface.php b/src/Cool/CollaboraDiscoveryFetcherInterface.php new file mode 100644 index 00000000..726663dd --- /dev/null +++ b/src/Cool/CollaboraDiscoveryFetcherInterface.php @@ -0,0 +1,33 @@ +getWopiClientURL(); // The protocol, domain and port are known when this test runs in the // docker-compose setup. @@ -46,8 +46,8 @@ public function testFetchClientUrlWithMisconfiguration(): void { 'server' => 'httx://example.com', ], ]); - /** @var \Drupal\collabora_online\Cool\CollaboraDiscovery $discovery */ - $discovery = \Drupal::service(CollaboraDiscovery::class); + /** @var \Drupal\collabora_online\Cool\CollaboraDiscoveryInterface $discovery */ + $discovery = \Drupal::service(CollaboraDiscoveryInterface::class); $this->expectException(CollaboraNotAvailableException::class); $this->expectExceptionMessage("The configured Collabora Online server address must begin with 'http://' or 'https://'. Found 'httx://example.com'.");