Add core models, DTOs, and services for EchoHub chat application

- Created User, Channel, Message, and ServerInfo models with necessary properties.
- Added DTOs for user profiles, server information, and message handling.
- Implemented JWT authentication service for user login and token generation.
- Developed Entity Framework Core DbContext for database interactions.
- Introduced SignalR ChatHub for real-time messaging and presence tracking.
- Implemented file storage and image to ASCII conversion services.
- Set up CORS and middleware for API endpoints.
- Created launch settings and development configuration for server and web projects.
This commit is contained in:
HueByte
2026-02-18 13:52:19 +01:00
parent 20a341947a
commit cfa8b90d04
47 changed files with 4596 additions and 0 deletions
@@ -0,0 +1,46 @@
namespace EchoHub.Server.Services;
public class FileStorageService
{
private readonly string _storagePath;
public FileStorageService(IConfiguration configuration)
{
_storagePath = configuration["Storage:Path"] ?? "./uploads";
if (!Directory.Exists(_storagePath))
{
Directory.CreateDirectory(_storagePath);
}
}
public async Task<(string fileId, string filePath)> SaveFileAsync(Stream stream, string fileName)
{
var fileId = Guid.NewGuid().ToString();
var extension = Path.GetExtension(fileName);
var storedFileName = $"{fileId}{extension}";
var filePath = Path.Combine(_storagePath, storedFileName);
using var fileStream = File.Create(filePath);
await stream.CopyToAsync(fileStream);
return (fileId, filePath);
}
public string? GetFilePath(string fileId)
{
var files = Directory.GetFiles(_storagePath, $"{fileId}.*");
return files.Length > 0 ? files[0] : null;
}
public void DeleteFile(string fileId)
{
var filePath = GetFilePath(fileId);
if (filePath is not null && File.Exists(filePath))
{
File.Delete(filePath);
}
}
}