public async Task Resource()

in Source/WebApp-Service-Provider-DotNet/Controllers/DataController.cs [167:220]


        public async Task<IActionResult> Resource()
        {
            ConsentCookie consentCookie;
            try
            {
                var json = Base64Decode(Request.Cookies["consent"]);
                consentCookie = JsonSerializer.Deserialize<ConsentCookie>(json);
            }
            catch (Exception)
            {
                ViewData["Message"] = "Impossible d'obtenir l'autorisation d'accès aux ressources, veuillez réessayer.";
                return View();
            }

            var client = new HttpClient();
            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", consentCookie.Token);
            var response = await client.GetAsync(GetResourceUrl(consentCookie.Provider));
            if (response.IsSuccessStatusCode)
            {
                var resource = await response.Content.ReadAsStringAsync();
                BaseResourceViewModel resourceViewModel = null;
                try
                {
                    resourceViewModel = ConvertResource(resource, consentCookie.Provider);
                }
                catch (JsonException)
                {
                    ViewData["Message"] = "Les données n'ont pas pu être désérialisées.";
                }
                return View(resourceViewModel);
            }
            else if (response.StatusCode == HttpStatusCode.NotFound)
            {
                ViewData["Message"] = "La ressource demandée n'a pas été trouvée.";
                if (consentCookie.Provider=="Custom"){
                    UriBuilder addDataUri = new(GetResourceUrl(consentCookie.Provider))
                    {
                        Path = "/Account/Register"
                    };
                    ViewData["Register-url"] = addDataUri.Uri;
                }
                return View();
            }
            else if (response.StatusCode == HttpStatusCode.Unauthorized)
            {
                ViewData["Message"] = "Vous n'êtes pas autorisé à accéder cette ressource.";
                return View();
            }
            else
            {
                ViewData["Message"] = "Impossible de récupérer les données auprès du fournisseur choisi.";
                return View();
            }
        }