示例#1
0
 public async Task <GetRecordingsResponse> GetRecordings(string baseUrl, string secret, GetRecordingsRequest request)
 => await ExecuteRequest <GetRecordingsResponse>(baseUrl, secret, "getRecordings",
                                                 ParametersExtractor.GenerateQueryString(request));
示例#2
0
        public async Task <GetRecordingsResponse> GetRecordings(string meetingID, string recordID)
        {
            var response = new GetRecordingsResponse
            {
                ReturnCode = "SUCCESS",
                Recordings = new Recordings
                {
                    Items = new List <Recording>()
                }
            };
            var servers = (await GetAvailableServers()).ToDictionary(s => s.Id, s => s);

            if (!string.IsNullOrEmpty(recordID))
            {
                var ids      = recordID.Split(',');
                var meetings = await AppDbContext.Meetings.Where(m => ids.Contains(m.InternalMeetingID)).ToListAsync();

                var meetingsByServer = meetings.GroupBy(m => m.ServerId);

                foreach (var group in meetingsByServer)
                {
                    if (!servers.ContainsKey(group.Key))
                    {
                        continue;
                    }

                    var server  = servers[group.Key];
                    var request = new GetRecordingsRequest
                    {
                        RecordId = string.Join(',', group.Select(m => m.InternalMeetingID))
                    };
                    var recordings = await _bbbClient.GetRecordings(server.Url, server.Secret, request);

                    if (recordings.Recordings?.Items?.Count > 0)
                    {
                        response.Recordings.Items.AddRange(recordings.Recordings.Items);
                    }
                }
            }
            else if (!string.IsNullOrEmpty(meetingID))
            {
                var ids      = meetingID.Split(',');
                var meetings = await AppDbContext.Meetings.Where(m => ids.Contains(m.MeetingID)).ToListAsync();

                var meetingsByServer = meetings.GroupBy(m => m.ServerId);

                foreach (var group in meetingsByServer)
                {
                    if (!servers.ContainsKey(group.Key))
                    {
                        continue;
                    }

                    var server  = servers[group.Key];
                    var request = new GetRecordingsRequest
                    {
                        MeetingId = string.Join(',', group.Select(m => m.MeetingID))
                    };
                    var recordings = await _bbbClient.GetRecordings(server.Url, server.Secret, request);

                    if (recordings.Recordings?.Items?.Count > 0)
                    {
                        response.Recordings.Items.AddRange(recordings.Recordings.Items);
                    }
                }
            }
            else // Get all
            {
                var request = new GetRecordingsRequest();
                foreach ((var serverId, var server) in servers)
                {
                    var recordings = await _bbbClient.GetRecordings(server.Url, server.Secret, request);

                    if (recordings.Recordings?.Items?.Count > 0)
                    {
                        response.Recordings.Items.AddRange(recordings.Recordings.Items);
                    }
                }
            }

            if (response.Recordings.Items.Count == 0)
            {
                response.MessageKey = "noRecordings";
                response.Message    = "There are no recordings for the meeting(s).";
            }

            return(response);
        }