Merge pull request #16535 from rullzer/ocs_share_api_url

OCS Share API link shares now always have an url
This commit is contained in:
Morris Jobke 2015-07-01 08:54:48 +02:00
commit 8f05d4b662
2 changed files with 55 additions and 0 deletions

View File

@ -71,6 +71,10 @@ class Local {
} }
$share['icon'] = substr(\OC_Helper::mimetypeIcon($share['mimetype']), 0, -3) . 'svg'; $share['icon'] = substr(\OC_Helper::mimetypeIcon($share['mimetype']), 0, -3) . 'svg';
} }
if (!is_null($share['token'])) {
$share['url'] = \OC::$server->getURLGenerator()->linkToRouteAbsolute('files_sharing.sharecontroller.showShare', ['token' => $share['token']]);
}
} }
return new \OC_OCS_Result($shares); return new \OC_OCS_Result($shares);
} }
@ -143,6 +147,12 @@ class Local {
if ($shares === null || empty($shares)) { if ($shares === null || empty($shares)) {
return new \OC_OCS_Result(null, 404, 'share doesn\'t exist'); return new \OC_OCS_Result(null, 404, 'share doesn\'t exist');
} else { } else {
foreach ($shares as &$share) {
if (!is_null($share['token'])) {
$share['url'] = \OC::$server->getURLGenerator()->linkToRouteAbsolute('files_sharing.sharecontroller.showShare', ['token' => $share['token']]);
}
}
return new \OC_OCS_Result($shares); return new \OC_OCS_Result($shares);
} }
} }

View File

@ -307,6 +307,51 @@ class Test_Files_Sharing_Api extends TestCase {
\Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2); \Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2);
} }
/**
* @medium
* @depends testCreateShare
*/
function testPublicLinkUrl() {
// simulate a post request
$_POST['path'] = $this->folder;
$_POST['shareType'] = \OCP\Share::SHARE_TYPE_LINK;
$result = \OCA\Files_Sharing\API\Local::createShare([]);
$this->assertTrue($result->succeeded());
$data = $result->getData();
// check if we have a token
$this->assertTrue(is_string($data['token']));
$id = $data['id'];
// check for correct link
$url = \OC::$server->getURLGenerator()->getAbsoluteURL('/index.php/s/' . $data['token']);
$this->assertEquals($url, $data['url']);
// check for link in getall shares
$result = \OCA\Files_Sharing\API\Local::getAllShares([]);
$this->assertTrue($result->succeeded());
$data = $result->getData();
$this->assertEquals($url, current($data)['url']);
// check for path
$_GET['path'] = $this->folder;
$result = \OCA\Files_Sharing\API\Local::getAllShares([]);
$this->assertTrue($result->succeeded());
$data = $result->getData();
$this->assertEquals($url, current($data)['url']);
// check in share id
$result = \OCA\Files_Sharing\API\Local::getShare(['id' => $id]);
$this->assertTrue($result->succeeded());
$data = $result->getData();
$this->assertEquals($url, current($data)['url']);
//Clean up share
$fileinfo = $this->view->getFileInfo($this->folder);
\OCP\Share::unshare('folder', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, null);
}
/** /**
* @medium * @medium
* @depends testCreateShare * @depends testCreateShare