Show filename on share link download

Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
This commit is contained in:
John Molakvoæ (skjnldsv) 2020-09-14 09:17:34 +02:00 committed by Julius Härtl
parent dada6ec60a
commit 6adb19b296
No known key found for this signature in database
GPG Key ID: 4C614C6ED2CDE6DF
3 changed files with 27 additions and 19 deletions

View File

@ -50,9 +50,10 @@ return [
],
[
'name' => 'Share#downloadShare',
'url' => '/s/{token}/download',
'url' => '/s/{token}/download/{filename}',
'verb' => 'GET',
'root' => '',
'defaults' => ['filename' => '']
],
[
'name' => 'PublicPreview#directLink',

View File

@ -414,7 +414,10 @@ class ShareController extends AuthPublicShareController {
$shareTmpl['showgridview'] = false;
$shareTmpl['hideFileList'] = $hideFileList;
$shareTmpl['downloadURL'] = $this->urlGenerator->linkToRouteAbsolute('files_sharing.sharecontroller.downloadShare', ['token' => $this->getToken()]);
$shareTmpl['downloadURL'] = $this->urlGenerator->linkToRouteAbsolute('files_sharing.sharecontroller.downloadShare', [
'token' => $this->getToken(),
'filename' => $shareIsFolder ? null : $shareNode->getName()
]);
$shareTmpl['shareUrl'] = $this->urlGenerator->linkToRouteAbsolute('files_sharing.sharecontroller.showShare', ['token' => $this->getToken()]);
$shareTmpl['maxSizeAnimateGif'] = $this->config->getSystemValue('max_filesize_animated_gifs_public_sharing', 10);
$shareTmpl['previewEnabled'] = $this->config->getSystemValue('enable_previews', true);

View File

@ -211,6 +211,7 @@ class ShareControllerTest extends \Test\TestCase {
public function testShowShare() {
$note = 'personal note';
$filename = 'file1.txt';
$this->shareController->setToken('token');
@ -225,7 +226,7 @@ class ShareControllerTest extends \Test\TestCase {
$initiator->method('isEnabled')->willReturn(true);
$file = $this->createMock(File::class);
$file->method('getName')->willReturn('file1.txt');
$file->method('getName')->willReturn($filename);
$file->method('getMimetype')->willReturn('text/plain');
$file->method('getSize')->willReturn(33);
$file->method('isReadable')->willReturn(true);
@ -250,14 +251,14 @@ class ShareControllerTest extends \Test\TestCase {
->setSharedBy('initiatorUID')
->setNode($file)
->setNote($note)
->setTarget('/file1.txt');
->setTarget("/$filename");
$this->session->method('exists')->with('public_link_authenticated')->willReturn(true);
$this->session->method('get')->with('public_link_authenticated')->willReturn('42');
$this->urlGenerator->expects($this->at(0))
->method('linkToRouteAbsolute')
->with('files_sharing.sharecontroller.downloadShare', ['token' => 'token'])
->with('files_sharing.sharecontroller.downloadShare', ['token' => 'token', 'filename' => $filename])
->willReturn('downloadURL');
$this->previewManager->method('isMimeSupported')->with('text/plain')->willReturn(true);
@ -312,8 +313,8 @@ class ShareControllerTest extends \Test\TestCase {
$response = $this->shareController->showShare();
$sharedTmplParams = [
'owner' => 'ownerUID',
'filename' => 'file1.txt',
'directory_path' => '/file1.txt',
'filename' => $filename,
'directory_path' => "/$filename",
'mimetype' => 'text/plain',
'dirToken' => 'token',
'sharingToken' => 'token',
@ -357,6 +358,7 @@ class ShareControllerTest extends \Test\TestCase {
public function testShowShareWithPrivateName() {
$note = 'personal note';
$filename = 'file1.txt';
$this->shareController->setToken('token');
@ -371,7 +373,7 @@ class ShareControllerTest extends \Test\TestCase {
$initiator->method('isEnabled')->willReturn(true);
$file = $this->createMock(File::class);
$file->method('getName')->willReturn('file1.txt');
$file->method('getName')->willReturn($filename);
$file->method('getMimetype')->willReturn('text/plain');
$file->method('getSize')->willReturn(33);
$file->method('isReadable')->willReturn(true);
@ -396,14 +398,14 @@ class ShareControllerTest extends \Test\TestCase {
->setSharedBy('initiatorUID')
->setNode($file)
->setNote($note)
->setTarget('/file1.txt');
->setTarget("/$filename");
$this->session->method('exists')->with('public_link_authenticated')->willReturn(true);
$this->session->method('get')->with('public_link_authenticated')->willReturn('42');
$this->urlGenerator->expects($this->at(0))
->method('linkToRouteAbsolute')
->with('files_sharing.sharecontroller.downloadShare', ['token' => 'token'])
->with('files_sharing.sharecontroller.downloadShare', ['token' => 'token', 'filename' => $filename])
->willReturn('downloadURL');
$this->previewManager->method('isMimeSupported')->with('text/plain')->willReturn(true);
@ -458,8 +460,8 @@ class ShareControllerTest extends \Test\TestCase {
$response = $this->shareController->showShare();
$sharedTmplParams = [
'owner' => '',
'filename' => 'file1.txt',
'directory_path' => '/file1.txt',
'filename' => $filename,
'directory_path' => "/$filename",
'mimetype' => 'text/plain',
'dirToken' => 'token',
'sharingToken' => 'token',
@ -503,6 +505,7 @@ class ShareControllerTest extends \Test\TestCase {
public function testShowShareHideDownload() {
$note = 'personal note';
$filename = 'file1.txt';
$this->shareController->setToken('token');
@ -517,7 +520,7 @@ class ShareControllerTest extends \Test\TestCase {
$initiator->method('isEnabled')->willReturn(true);
$file = $this->getMockBuilder('OCP\Files\File')->getMock();
$file->method('getName')->willReturn('file1.txt');
$file->method('getName')->willReturn($filename);
$file->method('getMimetype')->willReturn('text/plain');
$file->method('getSize')->willReturn(33);
$file->method('isReadable')->willReturn(true);
@ -542,7 +545,7 @@ class ShareControllerTest extends \Test\TestCase {
->setSharedBy('initiatorUID')
->setNode($file)
->setNote($note)
->setTarget('/file1.txt')
->setTarget("/$filename")
->setHideDownload(true);
$this->session->method('exists')->with('public_link_authenticated')->willReturn(true);
@ -553,7 +556,7 @@ class ShareControllerTest extends \Test\TestCase {
// files.
$this->urlGenerator->expects($this->at(0))
->method('linkToRouteAbsolute')
->with('files_sharing.sharecontroller.downloadShare', ['token' => 'token'])
->with('files_sharing.sharecontroller.downloadShare', ['token' => 'token', 'filename' => $filename])
->willReturn('downloadURL');
$this->previewManager->method('isMimeSupported')->with('text/plain')->willReturn(true);
@ -608,8 +611,8 @@ class ShareControllerTest extends \Test\TestCase {
$response = $this->shareController->showShare();
$sharedTmplParams = [
'owner' => 'ownerUID',
'filename' => 'file1.txt',
'directory_path' => '/file1.txt',
'filename' => $filename,
'directory_path' => "/$filename",
'mimetype' => 'text/plain',
'dirToken' => 'token',
'sharingToken' => 'token',
@ -774,6 +777,7 @@ class ShareControllerTest extends \Test\TestCase {
public function testShowShareInvalid() {
$this->expectException(\OCP\Files\NotFoundException::class);
$filename = 'file1.txt';
$this->shareController->setToken('token');
$owner = $this->getMockBuilder(IUser::class)->getMock();
@ -781,7 +785,7 @@ class ShareControllerTest extends \Test\TestCase {
$owner->method('getUID')->willReturn('ownerUID');
$file = $this->getMockBuilder('OCP\Files\File')->getMock();
$file->method('getName')->willReturn('file1.txt');
$file->method('getName')->willReturn($filename);
$file->method('getMimetype')->willReturn('text/plain');
$file->method('getSize')->willReturn(33);
$file->method('isShareable')->willReturn(false);
@ -792,7 +796,7 @@ class ShareControllerTest extends \Test\TestCase {
$share->setPassword('password')
->setShareOwner('ownerUID')
->setNode($file)
->setTarget('/file1.txt');
->setTarget("/$filename");
$this->session->method('exists')->with('public_link_authenticated')->willReturn(true);
$this->session->method('get')->with('public_link_authenticated')->willReturn('42');