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));
        }
Beispiel #2
0
        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));
            }
        }