Example #1
0
        public async Task <IActionResult> ManageProfileAsync(string profileId, string action)
        {
            if (manager == null)
            {
                manager = new SdsManager(await GetAccessTokenAsync());
            }

            _logger.LogInformation($"Attempting {action} profile {profileId}");

            var manageRequest = action != "delete" ?
                                await manager.ManageProfileAsync(profileId, action) :
                                await manager.DeleteProfileAsync(profileId);

            var resultContent = await manageRequest.Content.ReadAsStringAsync();

            var result          = JObject.Parse(resultContent);
            var formattedResult = result.ToString(Formatting.Indented);

            if (result.ContainsKey("error"))
            {
                TempData["manageProfileError"] = formattedResult;
                _logger.LogError("Error while managing profile:\r\n" + formattedResult);

                return(RedirectToAction("ProfilesAsync", new { profileId }));
            }

            _logger.LogInformation($"Manage result (URL: {manageRequest.RequestMessage.RequestUri.AbsoluteUri}, StatusCode: {manageRequest.StatusCode})\r\n: {formattedResult}");
            return(RedirectToAction("ProfilesAsync", new { profileId }));
        }
Example #2
0
        public async Task <IActionResult> ProfilesAsync(string profileId)
        {
            if (manager == null)
            {
                manager = new SdsManager(await GetAccessTokenAsync());
            }

            var manageError = TempData["manageProfileError"];

            if (manageError != null)
            {
                ViewBag.manageProfileError = manageError;
            }

            ViewBag.profileId = profileId;

            var profileRequest = string.IsNullOrWhiteSpace(profileId) ?
                                 await manager.QueryAllProfilesAsync() :
                                 await manager.QueryProfileAsync(profileId);

            var profile = await profileRequest.Content.ReadAsStringAsync();

            var profileDes = JsonConvert.DeserializeObject(profile);
            var profileSer = JsonConvert.SerializeObject(profileDes, Formatting.Indented);

            ViewBag.profile = profileSer;

            if (!string.IsNullOrWhiteSpace(profileId))
            {
                var profileStatusRequest = await manager.QueryProfileStatusAsync(profileId);

                var profileStatus = await profileStatusRequest.Content.ReadAsStringAsync();

                var profileStatusDes = JsonConvert.DeserializeObject(profileStatus);
                var profileStatusSer = JsonConvert.SerializeObject(profileStatusDes, Formatting.Indented);
                ViewBag.profileStatus = profileStatusSer;
            }
            else
            {
                ViewBag.profileStatus = string.Empty;
            }

            return(View("Profiles"));
        }
Example #3
0
        public async Task <IActionResult> CsvAsync(List <IFormFile> files)
        {
            if (files.Count < 6)
            {
                return(BadRequest());
            }

            if (manager == null)
            {
                manager = new SdsManager(await GetAccessTokenAsync());
            }

            var profile = await GetProfileAsync("csv");

            if (profile["error"] != null)
            {
                var err = profile["error"]["message"];
                ViewBag.Message = $"CSV connector failed with error \"{err}\"";
                ViewBag.Result  = "error";
                return(View("Csv"));
            }

            var profileId = (string)profile["id"];
            var uploadSas = await manager.GetCsvUploadUrl(profileId);

            await UploadToUrl(files, uploadSas);
            await StartCsvSyncSafely(profileId);

            profile = await GetProfileAsync("csv");

            if (profile["error"] != null)
            {
                var err = profile["error"]["message"];
                ViewBag.Message = $"CSV connector failed with error \"{err}\"";
                ViewBag.Result  = "error";
                return(View("Csv"));
            }

            ViewBag.Message = $"CSV connector has id {profile["id"]} and status {profile["state"]}";
            ViewBag.Result  = "success";
            return(View("Csv"));
        }
Example #4
0
        public async Task <IActionResult> RestAsync()
        {
            if (manager == null)
            {
                manager = new SdsManager(await GetAccessTokenAsync());
            }
            var profile = await GetProfileAsync("rest");

            if (profile["error"] != null)
            {
                var err = profile["error"]["message"];
                ViewBag.Message = $"OneRoster REST connector failed with error \"{err}\"";
                ViewBag.Result  = "error";
            }
            else
            {
                ViewBag.Message = $"OneRoster REST connector has id {profile["id"]} and status {profile["state"]}";
                ViewBag.Result  = "success";
            }
            return(View("Rest"));
        }
Example #5
0
        private async Task <JObject> GetProfileAsync(string profileName)
        {
            if (manager == null)
            {
                manager = new SdsManager(await GetAccessTokenAsync());
            }

            // find existing matching profile
            var res = await manager.QueryAllProfilesAsync();

            var profiles = (JArray)JObject.Parse(await res.Content.ReadAsStringAsync())["value"];

            foreach (var profile in profiles)
            {
                if ((string)profile["displayName"] == profileName)
                {
                    return((JObject)profile);
                }
            }

            return(null);
        }