#79: Added query parameter to randomize filename when downloading songs
Right now only the endpoint has this parameter added
This commit is contained in:
@@ -48,6 +48,14 @@ public class DirectoryManager : BaseManager
|
|||||||
|
|
||||||
|
|
||||||
#region Methods
|
#region Methods
|
||||||
|
// Does not include extension
|
||||||
|
public static string GenerateFilename(int length)
|
||||||
|
{
|
||||||
|
string chars = Constants.DirectoryPaths.FILENAME_CHARACTERS;
|
||||||
|
var random = new Random();
|
||||||
|
return new string(Enumerable.Repeat(chars, length).Select(s =>
|
||||||
|
s[random.Next(s.Length)]).ToArray());
|
||||||
|
}
|
||||||
public void CreateDirectory()
|
public void CreateDirectory()
|
||||||
{
|
{
|
||||||
CreateDirectory(_song);
|
CreateDirectory(_song);
|
||||||
|
|||||||
@@ -48,14 +48,24 @@ public class SongDataController : BaseController
|
|||||||
|
|
||||||
|
|
||||||
[HttpGet("download/{id}")]
|
[HttpGet("download/{id}")]
|
||||||
public IActionResult Download(int id)
|
public IActionResult Download(int id, [FromQuery] bool? randomizeFilename)
|
||||||
{
|
{
|
||||||
var songContext = new SongContext(_connectionString);
|
var songContext = new SongContext(_connectionString);
|
||||||
var songMetaData = songContext.RetrieveRecord(new Song { SongID = id});
|
var songMetaData = songContext.RetrieveRecord(new Song { SongID = id});
|
||||||
|
|
||||||
var song = _songMgr.RetrieveSong(songMetaData).Result;
|
var song = _songMgr.RetrieveSong(songMetaData).Result;
|
||||||
|
var filename = "";
|
||||||
|
|
||||||
|
if (randomizeFilename.HasValue && randomizeFilename.Value)
|
||||||
|
{
|
||||||
|
filename = Managers.DirectoryManager.GenerateFilename(10) + Constants.FileExtensions.WAV_EXTENSION;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
filename = songMetaData.Title + Constants.FileExtensions.WAV_EXTENSION;
|
||||||
|
}
|
||||||
|
|
||||||
return File(song.Data, "application/x-msdownload", songMetaData.Filename);
|
return File(song.Data, "application/x-msdownload", filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Assumes that the song already has metadata such as
|
// Assumes that the song already has metadata such as
|
||||||
|
|||||||
+10
-7
@@ -75,9 +75,7 @@ public class Song
|
|||||||
{
|
{
|
||||||
int length = Constants.DirectoryPaths.FILENAME_LENGTH;
|
int length = Constants.DirectoryPaths.FILENAME_LENGTH;
|
||||||
string chars = Constants.DirectoryPaths.FILENAME_CHARACTERS;
|
string chars = Constants.DirectoryPaths.FILENAME_CHARACTERS;
|
||||||
var random = new Random();
|
var filename = this.Generate(length, chars);
|
||||||
var filename = new string(Enumerable.Repeat(chars, length).Select(s =>
|
|
||||||
s[random.Next(s.Length)]).ToArray());
|
|
||||||
var extension = Icarus.Constants.FileExtensions.WAV_EXTENSION;
|
var extension = Icarus.Constants.FileExtensions.WAV_EXTENSION;
|
||||||
|
|
||||||
return flag == 0 ? filename : $"{filename}{extension}";
|
return flag == 0 ? filename : $"{filename}{extension}";
|
||||||
@@ -87,15 +85,20 @@ public class Song
|
|||||||
int length = Constants.DirectoryPaths.FILENAME_LENGTH;
|
int length = Constants.DirectoryPaths.FILENAME_LENGTH;
|
||||||
string chars = Constants.DirectoryPaths.FILENAME_CHARACTERS;
|
string chars = Constants.DirectoryPaths.FILENAME_CHARACTERS;
|
||||||
var extension = Icarus.Constants.FileExtensions.WAV_EXTENSION;
|
var extension = Icarus.Constants.FileExtensions.WAV_EXTENSION;
|
||||||
var random = new Random();
|
|
||||||
var filename = await Task.Run(() =>
|
var filename = await Task.Run(() =>
|
||||||
{
|
{
|
||||||
return new string(Enumerable.Repeat(chars, length).Select(s =>
|
return this.Generate(length, chars);
|
||||||
s[random.Next(s.Length)]).ToArray());
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
return flag == 0 ? filename : $"{filename}{extension}";
|
return flag == 0 ? filename : $"{filename}{extension}";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string Generate(int length, string chars)
|
||||||
|
{
|
||||||
|
var random = new Random();
|
||||||
|
var filename = new string(Enumerable.Repeat(chars, length).Select(s =>
|
||||||
|
s[random.Next(s.Length)]).ToArray());
|
||||||
|
return filename;
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user