Esempio n. 1
0
        public override IEnumerable <IRecordingDto> GetRecordings(IRecordingDtoBuilder dtoBuilder, string scoId, string accountUrl, TimeZoneInfo timeZone)
        {
            var result            = new List <IRecordingDto>();
            var seminarRecordings = AcProxy.GetRecordingsList(scoId);
            var seminarSessions   = _seminarService.GetSeminarSessions(scoId, AcProxy);

            if (MaxDegreeOfParallelism > 1)
            {
                object localLockObject = new object();

                Parallel.ForEach(
                    seminarSessions,
                    new ParallelOptions {
                    MaxDegreeOfParallelism = 20,
                },
                    () => { return(new List <IRecordingDto>()); },
                    (seminarSession, state, localList) =>
                {
                    ProcessSession(AcProxy,
                                   scoId,
                                   seminarSession,
                                   dtoBuilder,
                                   accountUrl,
                                   timeZone,
                                   localList);

                    return(localList);
                },
                    (finalResult) => { lock (localLockObject) result.AddRange(finalResult); }
                    );
            }
            else
            {
                foreach (var seminarSession in seminarSessions)
                {
                    ProcessSession(AcProxy,
                                   scoId,
                                   seminarSession,
                                   dtoBuilder,
                                   accountUrl,
                                   timeZone,
                                   result);
                }
            }

            var recordingsWithoutSession = seminarRecordings.Values
                                           .Where(x => x.Icon != "mp4-archive")
                                           .Where(x => result.All(r => !r.Id.Equals(x.ScoId)))
                                           .Select(x =>
            {
                var dto = dtoBuilder.Build(x, accountUrl, timeZone);
                return(dto);
            })
                                           .ToList();

            result.AddRange(recordingsWithoutSession);

            return(result);
        }
Esempio n. 2
0
        public override IEnumerable <IRecordingDto> GetRecordings(IRecordingDtoBuilder dtoBuilder, string scoId, string accountUrl, TimeZoneInfo timeZone)
        {
            var result        = new List <IRecordingDto>();
            var apiRecordings = AcProxy.GetRecordingsList(scoId, 0, int.MaxValue, "date-begin", SortOrder.Descending, excludeMp4: true);

            foreach (var recording in apiRecordings.Values)
            {
                var dto = dtoBuilder.Build(recording, accountUrl, timeZone);
                result.Add(dto);
            }

            return(result);
        }
Esempio n. 3
0
        private void ProcessSession(IAdobeConnectProxy AcProxy,
                                    string seminarScoId,
                                    AC.Provider.Entities.ScoContent seminarSession,
                                    IRecordingDtoBuilder dtoBuilder,
                                    string accountUrl,
                                    TimeZoneInfo timeZone,
                                    List <IRecordingDto> resultList)
        {
            RecordingCollectionResult sessionRecordings = null;

            // VSSO-205
            // https://verizon.cosocloud.com/api/xml?action=list-recordings&folder-id=7349002&seminar-session-id=8766014 returns internal-error, catching error
            try
            {
                sessionRecordings = AcProxy.GetSeminarSessionRecordingsList(seminarScoId, seminarSession.ScoId);
            }
            catch (AdobeConnectException e)
            {
                _logger.Error($"[Error-GetSeminarSessionRecordingsList] Server={AcProxy.AdobeConnectRoot}, seminarId={seminarScoId}, sessionId={seminarSession.ScoId}, AC response: {e.Status?.InnerXml}");
                return;
            }

            foreach (var recording in sessionRecordings.Values.Where(x => x.Icon != "mp4-archive"))
            {
                var dto = dtoBuilder.Build(recording, accountUrl, timeZone);

                ISeminarSessionRecordingDto seminarRecording = dto as ISeminarSessionRecordingDto;
                if (seminarRecording == null)
                {
                    throw new InvalidOperationException("ISeminarSessionRecordingDto expected");
                }
                seminarRecording.SeminarSessionId   = seminarSession.ScoId;
                seminarRecording.SeminarSessionName = seminarSession.Name;

                resultList.Add(dto);
            }
        }
Esempio n. 4
0
 public abstract IEnumerable <IRecordingDto> GetRecordings(IRecordingDtoBuilder dtoBuilder, string scoId, string accountUrl, TimeZoneInfo timeZone);