public MediaDescriptorAppService([NotNull] IBlobContainer <MediaContainer> mediaContainer, [NotNull] IMediaDescriptorRepository mediaDescriptorRepository, [NotNull] MediaDescriptorManager mediaDescriptorManager, [NotNull] IMediaDescriptorDefinitionStore mediaDescriptorDefinitionStore) { MediaContainer = mediaContainer ?? throw new ArgumentNullException(nameof(mediaContainer)); MediaDescriptorRepository = mediaDescriptorRepository ?? throw new ArgumentNullException(nameof(mediaDescriptorRepository)); MediaDescriptorManager = mediaDescriptorManager ?? throw new ArgumentNullException(nameof(mediaDescriptorManager)); MediaDescriptorDefinitionStore = mediaDescriptorDefinitionStore ?? throw new ArgumentNullException(nameof(mediaDescriptorDefinitionStore)); }
public virtual async Task <MediaDescriptorDto> CreateAsync(string entityType, CreateMediaInputWithStream inputStream) { var definition = await MediaDescriptorDefinitionStore.GetAsync(entityType); /* TODO: Shouldn't CreatePolicies be a dictionary and we check for inputStream.EntityType? */ await CheckAnyOfPoliciesAsync(definition.CreatePolicies); using (var stream = inputStream.File.GetStream()) { var newEntity = await MediaDescriptorManager.CreateAsync(entityType, inputStream.Name, inputStream.File.ContentType, inputStream.File.ContentLength ?? 0); await MediaContainer.SaveAsync(newEntity.Id.ToString(), stream); await MediaDescriptorRepository.InsertAsync(newEntity); return(ObjectMapper.Map <MediaDescriptor, MediaDescriptorDto>(newEntity)); } }