diff --git a/lib/private/OCS/DiscoveryService.php b/lib/private/OCS/DiscoveryService.php
index 4425947c55dacbe242787197b76d6a7dc8c08780..016331e908f28ef47f8574df17fadb85a43dc634 100644
--- a/lib/private/OCS/DiscoveryService.php
+++ b/lib/private/OCS/DiscoveryService.php
@@ -1,4 +1,5 @@
 <?php
+declare(strict_types=1);
 /**
  * @copyright Copyright (c) 2017 Bjoern Schiessle <bjoern@schiessle.org>
  *
@@ -60,11 +61,14 @@ class DiscoveryService implements IDiscoveryService {
 	 * @param string $service the service you want to discover
 	 * @return array
 	 */
-	public function discover($remote, $service) {
+	public function discover(string $remote, string $service): array {
 		// Check the cache first
 		$cacheData = $this->cache->get($remote . '#' . $service);
 		if($cacheData) {
-			return json_decode($cacheData, true);
+			$data = json_decode($cacheData, true);
+			if (\is_array($data)) {
+				return $data;
+			}
 		}
 
 		$discoveredServices = [];
@@ -77,7 +81,9 @@ class DiscoveryService implements IDiscoveryService {
 			]);
 			if($response->getStatusCode() === Http::STATUS_OK) {
 				$decodedServices = json_decode($response->getBody(), true);
-				$discoveredServices = $this->getEndpoints($decodedServices, $service);
+				if (\is_array($decodedServices)) {
+					$discoveredServices = $this->getEndpoints($decodedServices, $service);
+				}
 			}
 		} catch (\Exception $e) {
 			// if we couldn't discover the service or any end-points we return a empty array
@@ -91,17 +97,15 @@ class DiscoveryService implements IDiscoveryService {
 	/**
 	 * get requested end-points from the requested service
 	 *
-	 * @param $decodedServices
-	 * @param $service
+	 * @param array $decodedServices
+	 * @param string $service
 	 * @return array
 	 */
-	protected function getEndpoints($decodedServices, $service) {
+	protected function getEndpoints(array $decodedServices, string $service): array {
 
 		$discoveredServices = [];
 
-		if(is_array($decodedServices) &&
-			isset($decodedServices['services'][$service]['endpoints'])
-		) {
+		if(isset($decodedServices['services'][$service]['endpoints'])) {
 			foreach ($decodedServices['services'][$service]['endpoints'] as $endpoint => $url) {
 				if($this->isSafeUrl($url)) {
 					$discoveredServices[$endpoint] = $url;
@@ -119,7 +123,7 @@ class DiscoveryService implements IDiscoveryService {
 	 * @param string $url
 	 * @return bool
 	 */
-	protected function isSafeUrl($url) {
+	protected function isSafeUrl(string $url): bool {
 		return (bool)preg_match('/^[\/\.\-A-Za-z0-9]+$/', $url);
 	}
 
diff --git a/lib/public/OCS/IDiscoveryService.php b/lib/public/OCS/IDiscoveryService.php
index c9e67c3acabcc4c7a934102053cc8c064bbbe5c5..9a86e2a4410ea76797c796818953a25b908eed1a 100644
--- a/lib/public/OCS/IDiscoveryService.php
+++ b/lib/public/OCS/IDiscoveryService.php
@@ -1,4 +1,5 @@
 <?php
+declare(strict_types=1);
 /**
  * @copyright Copyright (c) 2017 Bjoern Schiessle <bjoern@schiessle.org>
  *
@@ -45,6 +46,6 @@ interface IDiscoveryService {
 	 * @param string $service the service you want to discover
 	 * @return array
 	 */
-	public function discover($remote, $service);
+	public function discover(string $remote, string $service): array;
 
 }