| 12345678910111213141516171819202122232425262728293031323334 |
- using System.Security.Cryptography;
- using RunnersMeet.Server.Domain;
- namespace RunnersMeet.Server.Persistence;
- public class FileName
- {
- public string Hash { get; }
- public string DisplayName { get; }
- private FileName(string hash, string displayName)
- {
- Hash = hash;
- DisplayName = displayName;
- }
- public string GetPath()
- {
- return Path.Combine(Hash.Substring(0, 2), Hash.Substring(2, 2), Hash);
- }
- public static async Task<FileName> FromFormUploadAsync(IFormFile file, CancellationToken cancellationToken = default)
- {
- var sha1 = SHA1.Create();
- var hash = Convert.ToHexString(await sha1.ComputeHashAsync(file.OpenReadStream(), cancellationToken));
- return new FileName(hash, file.FileName);
- }
- public static FileName FromTrack(Track track)
- {
- return new FileName(track.FileHash, $"{track.DisplayName}.gpx");
- }
- }
|