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)); }
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)); }