From f63f0aa1ae338b6599a591faf9d35d82e9f78457 Mon Sep 17 00:00:00 2001
From: Robin Appelman <robin@icewind.nl>
Date: Wed, 21 Sep 2016 18:55:58 +0200
Subject: [PATCH] get node by path as fallback

Signed-off-by: Robin Appelman <robin@icewind.nl>
---
 apps/files_sharing/lib/API/Share20OCS.php | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/apps/files_sharing/lib/API/Share20OCS.php b/apps/files_sharing/lib/API/Share20OCS.php
index d5a6d8bc9db..ac9ddc1fffa 100644
--- a/apps/files_sharing/lib/API/Share20OCS.php
+++ b/apps/files_sharing/lib/API/Share20OCS.php
@@ -140,10 +140,14 @@ class Share20OCS extends OCSController {
 			$nodes = $userFolder->getById($share->getNodeId());
 
 			if (empty($nodes)) {
-				throw new NotFoundException();
+				// fallback to guessing the path
+				$node = $userFolder->get($share->getTarget());
+				if ($node === null) {
+					throw new NotFoundException();
+				}
+			} else {
+				$node = $nodes[0];
 			}
-
-			$node = $nodes[0];
 		}
 
 		$result['path'] = $userFolder->getRelativePath($node->getPath());
@@ -405,8 +409,6 @@ class Share20OCS extends OCSController {
 
 		try {
 			$share = $this->shareManager->createShare($share);
-			$userFolder = $this->rootFolder->getUserFolder($this->currentUser->getUID());
-			$recipientNode = $userFolder->get($share->getTarget());
 		} catch (GenericShareException $e) {
 			$code = $e->getCode() === 0 ? 403 : $e->getCode();
 			throw new OCSException($e->getHint(), $code);
@@ -416,7 +418,7 @@ class Share20OCS extends OCSController {
 			$share->getNode()->unlock(ILockingProvider::LOCK_SHARED);
 		}
 
-		$output = $this->formatShare($share, $recipientNode);
+		$output = $this->formatShare($share);
 
 		return new DataResponse($output);
 	}
-- 
GitLab