Ejemplo n.º 1
0
        public async Task <BlobModel> GenerateBlobLink(Guid blobId, BlobCallback blobCallback)
        {
            ExceptionHelper.ThrowArgumentNullIfEmpty(blobId, nameof(blobId));

            var blob = await _repository.GetById(blobId);

            ExceptionHelper.ThrowNotFoundIfEmpty(blob, "Blob");

            if (IsValidBlobLink(blob))
            {
                return(_mapper.Map <BlobModel>(blob));
            }

            var(url, expirationDate) = blobCallback(blob.UserId, blob.Name);

            blob = await GenerateBlobLinkAndSave(blob, url, expirationDate);

            return(_mapper.Map <BlobModel>(blob));
        }
Ejemplo n.º 2
0
        public async Task <IReadOnlyCollection <BlobModel> > GetBlobsByUserId(Guid userId, BlobCallback blobCallback)
        {
            ExceptionHelper.ThrowArgumentNullIfEmpty(userId, nameof(userId));
            ExceptionHelper.ThrowParameterNullIfEmpty(blobCallback, "Blob callback");

            var blobs = await _repository.GetAll()
                        .Include(q => q.BlobLink)
                        .Where(q => q.UserId == userId)
                        .ToArrayAsync();

            foreach (var blob in blobs.Where(blob => !IsValidBlobLink(blob)))
            {
                var(url, expirationDate) = blobCallback(blob.UserId, blob.Name);
                await GenerateBlobLinkAndSave(blob, url, expirationDate);
            }

            return(_mapper.Map <BlobModel[]>(blobs));
        }