using Microsoft.AspNetCore.Mvc; using TuneRipper.Api.Services; namespace TuneRipper.Api.Controllers; [ApiController] [Route("api/[controller]")] public class SessionController : ControllerBase { private readonly ISessionService _sessionService; private readonly ILogger _logger; public SessionController(ISessionService sessionService, ILogger logger) { _sessionService = sessionService; _logger = logger; } [HttpPost("create")] public ActionResult CreateSession() { try { var sessionId = _sessionService.CreateSession(); return Ok(new { sessionId, message = "Session created successfully", expiresAt = DateTime.UtcNow.AddHours(24) }); } catch (Exception ex) { _logger.LogError(ex, "Error creating session"); return StatusCode(500, "Error creating session"); } } [HttpGet("validate/{sessionId}")] public ActionResult ValidateSession(string sessionId) { if (string.IsNullOrWhiteSpace(sessionId)) { return BadRequest("Session ID is required"); } var isValid = _sessionService.IsValidSession(sessionId); return Ok(new { sessionId, isValid, message = isValid ? "Session is valid" : "Session is invalid or expired" }); } [HttpPost("refresh/{sessionId}")] public ActionResult RefreshSession(string sessionId) { if (string.IsNullOrWhiteSpace(sessionId)) { return BadRequest("Session ID is required"); } if (!_sessionService.IsValidSession(sessionId)) { return NotFound("Session not found or expired"); } // Session is automatically refreshed when IsValidSession is called return Ok(new { sessionId, message = "Session refreshed successfully", expiresAt = DateTime.UtcNow.AddHours(24) }); } }