Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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);
        }