public async Task <object> File( [Required] long id, [FromServices] HashFileProvider fileProvider, [FromServices] AppDbContext context) { var music = await context.Musics.FindAsync(id); if (music is null || music.Deleted) { return(StatusCode(404)); } if (music.Locked) { return(StatusCode(403)); } var fs = fileProvider.GetFileByHash(music.FileHash); return(File(fs, "audio/mp3", music.Title + ".mp3", null, EntityTagHeaderValue.Parse(new StringSegment('"' + music.FileHash + '"')), true)); }
public async Task <object> Image( [Required] long id, [FromServices] AppDbContext context, [FromServices] HashFileProvider fileProvider) { var map = await context.Maps.FindAsync(id); if (map is null || map.Deleted) { return(StatusCode(404)); } if (map.Locked) { return(StatusCode(403)); } var hashAndType = map.ImageFileHashAndType.Split(':'); var file = fileProvider.GetFileByHash(hashAndType[0]); return(File(file, hashAndType[1], null, EntityTagHeaderValue.Parse(new StringSegment('"' + hashAndType[0] + '"')), true)); }
public async Task <object> Profile( [Required] string username, [FromServices] HashFileProvider fileProvider) { var user = await userManager.FindByNameAsync(username); var hash = user?.ProfileFileHash; if (hash == null) { return(StatusCode(404)); } try { var fs = fileProvider.GetFileByHash(hash); return(File(fs, "image/jpeg", null, EntityTagHeaderValue.Parse(new StringSegment('"' + hash + '"')), true)); } catch (FileNotFoundException) { return(StatusCode(404)); } }