From 204bb802523f9cab5ec09e98e83b482d54f2c4e6 Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Sun, 2 Mar 2025 15:57:10 +0000 Subject: [PATCH] GetJson helper --- .../Controllers/HomeController.cs | 54 ++++--------------- .../Helpers/HttpContextHelpers.cs | 20 +++++++ .../Views/Shared/_Layout.cshtml | 6 +-- .../Views/_ViewImports.cshtml | 2 +- 4 files changed, 33 insertions(+), 49 deletions(-) create mode 100644 src/sampleWebAsWebApiClient/Helpers/HttpContextHelpers.cs diff --git a/src/sampleWebAsWebApiClient/Controllers/HomeController.cs b/src/sampleWebAsWebApiClient/Controllers/HomeController.cs index 96eb7dfc..02e3d8d4 100755 --- a/src/sampleWebAsWebApiClient/Controllers/HomeController.cs +++ b/src/sampleWebAsWebApiClient/Controllers/HomeController.cs @@ -1,37 +1,15 @@ -using System; -using System.Collections.Generic; using System.Diagnostics; -using System.IO; -using System.Net.Http; using System.Net.Http.Headers; -using System.Text.Json; -using System.Threading; -using System.Threading.Tasks; -using IdentityModel.Client; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Logging; -using Newtonsoft.Json.Linq; +using Yavsc.WebApiClient.Helpers; -namespace testOauthClient.Controllers +namespace sampleWebAsWebApiClient.Controllers { - public class HomeController : Controller + public class HomeController(ILoggerFactory loggerFactory) : Controller { - readonly ILogger _logger; + readonly ILogger _logger = loggerFactory.CreateLogger(); - public class GCMRegistrationRecord - { - public string GCMRegistrationId { get; set; } = "testGoogleRegistrationIdValue"; - public string DeviceId { get; set; } = "TestDeviceId"; - public string Model { get; set; } = "TestModel"; - public string Platform { get; set; } = "External Web"; - public string Version { get; set; } = "0.0.1-rc1"; - } - - public HomeController(ILoggerFactory loggerFactory) - { - _logger = loggerFactory.CreateLogger(); - } [HttpGet] public IActionResult Index() { @@ -49,36 +27,22 @@ namespace testOauthClient.Controllers ViewBag.Json = content; return View("json"); } - [HttpPost] public async Task GetUserInfo(CancellationToken cancellationToken) { - var accessToken = await HttpContext.GetTokenAsync("access_token"); - var client = new HttpClient(new HttpClientHandler(){ AllowAutoRedirect=false }); - client.DefaultRequestHeaders.Add("Accept", "application/json"); - client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); - var content = await client.GetAsync("https://localhost:6001/api/account/me"); - content.EnsureSuccessStatusCode(); - var json = await content.Content.ReadAsStreamAsync(); - var obj = JsonSerializer.Deserialize(json); - return View("UserInfo", obj.ToString()); + + string json = await HttpContext.GetJson("https://localhost:6001/api/account/me"); + return View("UserInfo", json); } [HttpPost] - public async Task GetApiCall(CancellationToken cancellationToken) + public async Task GetIdentity(CancellationToken cancellationToken) { - var accessToken = await HttpContext.GetTokenAsync("access_token"); - var client = new HttpClient(new HttpClientHandler(){ AllowAutoRedirect=false }); - client.DefaultRequestHeaders.Add("Accept", "application/json"); - client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); - var content = await client.GetAsync("https://localhost:6001/identity"); - content.EnsureSuccessStatusCode(); - var json = await content.Content.ReadAsStringAsync(); + string json = await HttpContext.GetJson("https://localhost:6001/identity"); return View("UserInfo", json); } - public IActionResult About() { ViewData["Message"] = "Your application description page."; diff --git a/src/sampleWebAsWebApiClient/Helpers/HttpContextHelpers.cs b/src/sampleWebAsWebApiClient/Helpers/HttpContextHelpers.cs new file mode 100644 index 00000000..2397872d --- /dev/null +++ b/src/sampleWebAsWebApiClient/Helpers/HttpContextHelpers.cs @@ -0,0 +1,20 @@ +using System.Net.Http.Headers; +using Microsoft.AspNetCore.Authentication; + +namespace Yavsc.WebApiClient.Helpers; + +public static class HttpContextHelpers +{ + public static async Task GetJson(this HttpContext httpContext, string endPoint) + { + var accessToken = await httpContext.GetTokenAsync("access_token"); + var client = new HttpClient(new HttpClientHandler() { AllowAutoRedirect = false }); + client.DefaultRequestHeaders.Add("Accept", "application/json"); + client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); + var content = await client.GetAsync(endPoint); + content.EnsureSuccessStatusCode(); + var json = await content.Content.ReadAsStringAsync(); + return json; + } + +} diff --git a/src/sampleWebAsWebApiClient/Views/Shared/_Layout.cshtml b/src/sampleWebAsWebApiClient/Views/Shared/_Layout.cshtml index b5ba2e96..6461a84a 100755 --- a/src/sampleWebAsWebApiClient/Views/Shared/_Layout.cshtml +++ b/src/sampleWebAsWebApiClient/Views/Shared/_Layout.cshtml @@ -3,7 +3,7 @@ - @ViewData["Title"] - testOauthClient + @ViewData["Title"] - sampleWebAsWebApiClient @@ -18,7 +18,7 @@ - testOauthClient + sampleWebAsWebApiClient diff --git a/src/sampleWebAsWebApiClient/Views/_ViewImports.cshtml b/src/sampleWebAsWebApiClient/Views/_ViewImports.cshtml index 5ebd7c19..3874886e 100755 --- a/src/sampleWebAsWebApiClient/Views/_ViewImports.cshtml +++ b/src/sampleWebAsWebApiClient/Views/_ViewImports.cshtml @@ -1,2 +1,2 @@ -@using testOauthClient +@using sampleWebAsWebApiClient @addTagHelper "*, Microsoft.AspNet.Mvc.TagHelpers"