public FileDataContract DownloadWholeAudioBook(DownloadWholeBookContract requestContract) { m_authorizationManager.AuthorizeBook(requestContract.BookId); var audioType = (AudioType)requestContract.RequestedAudioType; var book = m_bookVersionRepository.GetBookWithLastVersion(requestContract.BookId); FullBookRecording recording = m_bookVersionRepository.GetFullBookRecording(book.LastVersion.Id, audioType); if (recording == null) { var message = $"Cannot locate full book recording archive for book:'{requestContract.BookId}' of requested type:'{requestContract.RequestedAudioType}'"; if (m_log.IsErrorEnabled) { m_log.ErrorFormat(message); } throw new ArgumentException(message); } var stream = m_fileSystemManager.GetResource(book.Guid, book.LastVersion.VersionId, recording.FileName, ResourceType.Audio); return(new FileDataContract { FileName = recording.FileName, FileData = stream, MimeType = recording.MimeType, }); }
private void PackAllBookAudioArchives(ResourceSessionDirector resourceSessionDirector, Dictionary <AudioType, List <TrackRecording> > recordings, BookVersion bookVersionEntity) { bookVersionEntity.FullBookRecordings = new List <FullBookRecording>(); foreach (var audioType in recordings.Keys) { var allBookArchive = GenerateFullBookArchive(recordings[audioType], bookVersionEntity, audioType, resourceSessionDirector); resourceSessionDirector.Resources.Add(allBookArchive); var entity = new FullBookRecording { BookVersion = bookVersionEntity, AudioType = audioType, FileName = allBookArchive.FileName, MimeType = MimeType }; bookVersionEntity.FullBookRecordings.Add(entity); } }