ChatMVC/Chat/Controllers/DocumentsController.cs
2025-01-31 18:19:35 -03:00

95 lines
3.0 KiB
C#

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using System.Net.Http.Headers;
using static System.Net.Mime.MediaTypeNames;
namespace ChatMvc.Controllers
{
[Authorize]
public class DocumentsController : Controller
{
private readonly HttpClient _httpClient;
public DocumentsController()
{
_httpClient = new HttpClient();
_httpClient.BaseAddress = new Uri("http://localhost:5020/");
}
public async Task<IActionResult> Index()
{
var token = User.Claims.FirstOrDefault(f => f.Type == "TokenExternal").Value;
_httpClient.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", token.Replace("Bearer ", ""));
var response = await _httpClient.GetAsync("Chat/texts");
if (response.IsSuccessStatusCode)
{
var texts = await response.Content.ReadFromJsonAsync<IEnumerable<TextResponse>>();
return View(texts);
}
return View(new List<TextResponse>());
}
public IActionResult New()
{
return View();
}
public async Task<IActionResult> Edit(string id)
{
var token = User.Claims.FirstOrDefault(f => f.Type == "TokenExternal").Value;
_httpClient.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", token.Replace("Bearer ", ""));
var response = await _httpClient.GetAsync(string.Format("chat/texts/id/{0}", id));
if (response.IsSuccessStatusCode)
{
var text = await response.Content.ReadFromJsonAsync<TextResponse>();
var request = new TextRequest()
{
Id = text.Id,
Title = text.Title,
Content = text.Content
};
return View("New", request);
}
return View("New");
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Save([FromForm] TextRequest request)
{
var token = User.Claims.FirstOrDefault(f => f.Type == "TokenExternal").Value;
_httpClient.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", token.Replace("Bearer ", ""));
var response = await _httpClient.PostAsJsonAsync("chat/savetext", request);
if (response.IsSuccessStatusCode)
{
return RedirectToAction("Index");
}
return View("Novo", request);
}
}
public class TextResponse
{
public string Id { get; set; }
public string Title { get; set; }
public string Content { get; set; }
}
public class TextRequest
{
public string? Id { get; set; }
public string Title { get; set; }
public string Content { get; set; }
}
}