private void CallRemoveFromMeeting(Guid sessionToken, LmsUserDTO user, List <string> result) { try { string data = string.Format("ac_id={0}&ac_role={1}&lms_role={2}&id=1&name=Mike+Kollen&is_editable=true&email=mike\"%\"40esynctraining.com&guest_id=&lmsProviderName={3}&meetingId={4}", user.ac_id, "", user.lms_role, sessionToken.ToString().ToLower(), _meetingId.ToString()); string arguments = string.Format("--data \"{1}\" --config {0} -s", Path.Combine(_configFolder, "users-removefrommeeting.cfg"), data); var output = RunExternalExe(_curlExeFullPath, arguments); bool ok = output.StartsWith("HTTP/1.1 200 OK") && output.Contains("\"isSuccess\":true"); if (ok) { result.Add("Lti/user/removefrommeeting: SUCCESS: Returns 200 Http status code + 'isSuccess' JSON result"); } else { result.Add("Lti/user/removefrommeeting: ERROR."); } } catch (Exception ex) { result.Add("Lti/user/removefrommeeting: ERROR. Monitoring tool issue: " + ex.Message); } }
public IEnumerable <string> DoCheckRequests() { var result = new List <string>(); string output = DoLogin(result); string redirectUrl = null; var url = Regex.Match(output, "Object moved to <a href=\\\"(?<redirectUrl>[^\"]+)\\\""); if (url.Success) { redirectUrl = url.Groups["redirectUrl"].Value; List <MeetingDTO> meetings = GetEntryPageAndParseMeetings(redirectUrl); if ((meetings != null) && meetings.Any(x => x.type == 1)) { _meetingId = meetings.First(x => x.type == 1).id; //Meeting } } var parsing = Regex.Match(output, "Object moved to <a href=\\\"/extjs/entry[?]primaryColor=(?<color>[A-Z-a-z0-9]+)[&][a]mp;lmsProviderName=(?<session>[A-Fa-f0-9]{8}(?:-[A-Fa-f0-9]{4}){3}-[A-Fa-f0-9]{12})[&][a]mp;"); if (parsing.Success) { result.Add("canvas-login: SUCCESS - Returns 302 Http status code to 'extjs/entry' page."); } else { result.Add("canvas-login: ERROR."); } if (parsing.Success) { Guid sessionToken; if (Guid.TryParse(parsing.Groups["session"].Value, out sessionToken)) { DoCall("Lti/Template/GetAll", "templates.cfg", sessionToken, result); if (_meetingId > 0) { DoCall("Lti/Recording/GetAll", "recordings.cfg", sessionToken, result); DoCall("Lti/Meeting/Attendance", "reports-attendance.cfg", sessionToken, result); DoCall("Lti/Meeting/Sessions", "reports-sessions.cfg", sessionToken, result); string usersOutput = DoCall("Lti/User/GetAll", "users.cfg", sessionToken, result); // TODO: do it with newly created meeting!! // NOTE: set Mike Kollen as teacher - if it is not in list DoCall("Lti/Meeting/SetDefaultACRoles", "users-sync.cfg", sessionToken, result); if (!string.IsNullOrWhiteSpace(usersOutput)) { List <LmsUserDTO> users = ParseUsers(usersOutput); LmsUserDTO user = users.FirstOrDefault(x => x.name == "Mike Kollen"); if (user != null) { CallChangeRole(sessionToken, user, "Presenter", result); CallChangeRole(sessionToken, user, "Host", result); CallRemoveFromMeeting(sessionToken, user, result); } } } else { result.Add("=No meetings found="); } CreateMeeting(sessionToken, result); List <MeetingDTO> meetings = GetEntryPageAndParseMeetings(redirectUrl); MeetingDTO meetingToDelete = meetings.Single(x => x.name == "AutoCreatedMeeting"); DeleteMeeting(sessionToken, meetingToDelete.id, result); } } return(result); }