aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files_sharing/api/local.php
diff options
context:
space:
mode:
authorRoeland Jago Douma <roeland@famdouma.nl>2015-08-29 12:39:47 +0200
committerRoeland Jago Douma <roeland@famdouma.nl>2015-08-29 12:39:47 +0200
commitfc64ea670d63b125d277ddcacc0b48253b62c28d (patch)
treef00d41822be79a0a9ab14f096f71f6f24db7bafd /apps/files_sharing/api/local.php
parentdc7a4e1b9de14fd398e4800e965b0061d78bc187 (diff)
downloadnextcloud-server-fc64ea670d63b125d277ddcacc0b48253b62c28d.tar.gz
nextcloud-server-fc64ea670d63b125d277ddcacc0b48253b62c28d.zip
Allow to directly set the expireDate on a new (link)share
Since this extends the API we now properly parse the date. We only accept valid ISO 8601 Dates (YYYY-MM-DD). Currently this only works for link shares (it is just ignored for other shares). Since we do not have user/group/federated expiring shares yet. * Tests added
Diffstat (limited to 'apps/files_sharing/api/local.php')
-rw-r--r--apps/files_sharing/api/local.php38
1 files changed, 36 insertions, 2 deletions
diff --git a/apps/files_sharing/api/local.php b/apps/files_sharing/api/local.php
index eb0e0e0d846..eeb31899830 100644
--- a/apps/files_sharing/api/local.php
+++ b/apps/files_sharing/api/local.php
@@ -258,6 +258,7 @@ class Local {
$itemSource = self::getFileId($path);
$itemSourceName = $itemSource;
$itemType = self::getItemType($path);
+ $expirationDate = null;
if($itemSource === null) {
return new \OC_OCS_Result(null, 404, "wrong path, file/folder doesn't exist.");
@@ -286,6 +287,14 @@ class Local {
// read, create, update (7) if public upload is enabled or
// read (1) if public upload is disabled
$permissions = $publicUpload === 'true' ? 7 : 1;
+
+ // Get the expiration date
+ try {
+ $expirationDate = isset($_POST['expireDate']) ? self::parseDate($_POST['expireDate']) : null;
+ } catch (\Exception $e) {
+ return new \OC_OCS_Result(null, 404, 'Invalid Date');
+ }
+
break;
default:
return new \OC_OCS_Result(null, 400, "unknown share type");
@@ -302,8 +311,9 @@ class Local {
$shareType,
$shareWith,
$permissions,
- $itemSourceName
- );
+ $itemSourceName,
+ $expirationDate
+ );
} catch (HintException $e) {
return new \OC_OCS_Result(null, 400, $e->getHint());
} catch (\Exception $e) {
@@ -538,6 +548,30 @@ class Local {
}
/**
+ * Make sure that the passed date is valid ISO 8601
+ * So YYYY-MM-DD
+ * If not throw an exception
+ *
+ * @param string $expireDate
+ *
+ * @throws \Exception
+ * @return \DateTime
+ */
+ private static function parseDate($expireDate) {
+ if (preg_match('/^\d{4}-\d{2}-\d{2}$/', $expireDate) === 0) {
+ throw new \Exception();
+ }
+
+ $date = new \DateTime($expireDate);
+
+ if ($date === false) {
+ throw new \Exception();
+ }
+
+ return $date;
+ }
+
+ /**
* get file ID from a given path
* @param string $path
* @return string fileID or null