Esempio n. 1
0
        public async Task <Image> CreateAsync(Entry entry, IFileInput file)
        {
            Ensure.NotNull(entry, "entry");
            Ensure.NotNull(file, "file");

            await validator.ValidateAsync(entry.UserId, file);

            (int width, int height)size = default;
            using (Stream imageContent = file.OpenReadStream())
                size = resizeService.GetSize(imageContent);

            string imageId = Guid.NewGuid().ToString();
            Image  entity  = new Image()
            {
                Id             = imageId,
                Name           = Path.GetFileNameWithoutExtension(file.FileName),
                FileName       = imageId + Path.GetExtension(file.FileName),
                Created        = DateTime.Now,
                When           = entry.When,
                Entry          = entry,
                OriginalWidth  = size.width,
                OriginalHeight = size.height
            };

            await dataContext.Images.AddAsync(entity);

            bool isOriginalStored = await freeLimits.IsOriginalImageStoredAsync(entry.UserId);

            if (isOriginalStored)
            {
                await CopyFileAsync(file, entry, entity);
            }

            using (Stream imageContent = file.OpenReadStream())
                SetProperties(entity, imageContent);

            await dataContext.SaveChangesAsync();

            using (Stream imageContent = file.OpenReadStream())
                await ComputeOtherSizesAsync(entry, entity, imageContent, true);

            return(entity);
        }
Esempio n. 2
0
 private async Task CopyFileAsync(IFileInput file, Entry entry, Image image)
 {
     using (Stream source = file.OpenReadStream())
         await fileStorage.SaveAsync(entry, image, source, ImageType.Original);
 }