Пример #1
0
        public AudioTrackContract DownloadAudioBookTrack(DownloadAudioBookTrackContract requestContract)
        {
            m_authorizationManager.AuthorizeBook(requestContract.BookId);
            var audioType = (AudioType)requestContract.RequestedAudioType;
            var book      = m_bookVersionRepository.GetBookWithLastVersion(requestContract.BookId);

            TrackRecording recording = m_bookVersionRepository.GetRecordingByTrackAndAudioType(requestContract.BookId, requestContract.TrackPosition, audioType);

            if (recording == null)
            {
                var message =
                    $"Cannot locate recording'{requestContract.TrackPosition}' 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 AudioTrackContract
            {
                FileName = recording.FileName,
                FileData = stream,
                Lenght = recording.Length,
                MimeType = recording.MimeType,
            });
        }
Пример #2
0
        public virtual IList <Track> GetTracksForBookVersion(long bookVersionId)
        {
            using (var session = GetSession())
            {
                Track          trackAlias     = null;
                TrackRecording recordingAlias = null;

                var query = session.QueryOver(() => trackAlias)
                            .JoinAlias(() => trackAlias.Recordings, () => recordingAlias, JoinType.LeftOuterJoin)
                            .Where(() => trackAlias.BookVersion.Id == bookVersionId)
                            .Fetch(x => x.Recordings).Eager
                            .OrderBy(x => x.Position).Asc
                            .OrderBy(() => recordingAlias.AudioType).Asc
                            .TransformUsing(Transformers.DistinctRootEntity);

                return(query.List());
            }
        }
Пример #3
0
 public void StartRecording()
 {
     _trackRecording = new TrackRecording();
 }