convert to use service

This commit is contained in:
Ryan Peters 2023-01-05 10:32:21 -05:00
parent 596065b7c8
commit 2caa82b8f4
5 changed files with 51 additions and 19 deletions

View File

@ -1,4 +1,5 @@
using Microsoft.AspNetCore.Mvc;
using BinaryDad.Notes.Services;
using Microsoft.AspNetCore.Mvc;
namespace BinaryDad.Notes.Controllers;
@ -6,11 +7,11 @@ namespace BinaryDad.Notes.Controllers;
[Route("[controller]")]
public class ApiController : ControllerBase
{
private readonly string filePath;
private readonly INoteService noteService;
public ApiController(IConfiguration configuration)
public ApiController(INoteService noteService)
{
filePath = configuration["ContentFilePath"];
this.noteService = noteService;
}
[HttpPost]
@ -24,7 +25,7 @@ public class ApiController : ControllerBase
content = await reader.ReadToEndAsync();
}
await System.IO.File.WriteAllTextAsync(filePath, content);
noteService.Save(content);
return true;
}

View File

@ -1,19 +1,20 @@
using Microsoft.AspNetCore.Mvc;
using BinaryDad.Notes.Services;
using Microsoft.AspNetCore.Mvc;
namespace BinaryDad.Notes.Controllers;
public class HomeController : Controller
{
private readonly string filePath;
private readonly INoteService noteService;
public HomeController(IConfiguration configuration)
public HomeController(INoteService noteService)
{
filePath = configuration["ContentFilePath"];
this.noteService = noteService;
}
public IActionResult Index()
{
var content = System.IO.File.ReadAllText(filePath);
var content = noteService.Get();
return View((object)content);
}

View File

@ -1,7 +1,10 @@
using BinaryDad.Notes.Services;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllersWithViews();
builder.Services.AddSingleton<INoteService, FileNoteService>();
var app = builder.Build();
@ -13,15 +16,6 @@ if (!app.Environment.IsDevelopment())
app.UseHsts();
}
// create file
var configuration = app.Services.GetService<IConfiguration>();
var filePath = configuration["ContentFilePath"];
if (!File.Exists(filePath))
{
File.WriteAllText(filePath, "Hi! Feel free to start typing. Everything will be saved soon after you are done typing.");
}
app.UseHttpsRedirection();
app.UseStaticFiles();

View File

@ -0,0 +1,28 @@
namespace BinaryDad.Notes.Services
{
public class FileNoteService : INoteService
{
private readonly string? filePath;
public FileNoteService(IConfiguration configuration)
{
filePath = configuration["ContentFilePath"];
// ensure initialized
if (!File.Exists(filePath))
{
File.WriteAllText(filePath, "Hi! Feel free to start typing. Everything will be saved soon after you are done typing.");
}
}
public string Get()
{
return File.ReadAllText(filePath);
}
public void Save(string content)
{
File.WriteAllText(filePath, content);
}
}
}

8
Services/INoteService.cs Normal file
View File

@ -0,0 +1,8 @@
namespace BinaryDad.Notes.Services
{
public interface INoteService
{
string Get();
void Save(string content);
}
}