Files
rr3-server/RR3CommunityServer/Controllers/ProductController.cs
Daniel Elliott 0a327f3a8b Initial commit: RR3 Community Server with web admin panel
- ASP.NET Core 8 REST API server
- 12 API endpoints matching EA Synergy protocol
- SQLite database with Entity Framework Core
- Web admin panel with Bootstrap 5
- User, Catalog, Session, Purchase management
- Comprehensive documentation

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-17 22:02:12 -08:00

72 lines
2.0 KiB
C#

using Microsoft.AspNetCore.Mvc;
using RR3CommunityServer.Models;
using RR3CommunityServer.Services;
namespace RR3CommunityServer.Controllers;
[ApiController]
[Route("product/api/core")]
public class ProductController : ControllerBase
{
private readonly ICatalogService _catalogService;
private readonly ILogger<ProductController> _logger;
public ProductController(ICatalogService catalogService, ILogger<ProductController> logger)
{
_catalogService = catalogService;
_logger = logger;
}
[HttpGet("getAvailableItems")]
public async Task<ActionResult<SynergyResponse<List<CatalogItem>>>> GetAvailableItems()
{
_logger.LogInformation("GetAvailableItems request");
var items = await _catalogService.GetAvailableItems();
var response = new SynergyResponse<List<CatalogItem>>
{
resultCode = 0,
message = "Success",
data = items
};
return Ok(response);
}
[HttpGet("getMTXGameCategories")]
public async Task<ActionResult<SynergyResponse<List<CatalogCategory>>>> GetCategories()
{
_logger.LogInformation("GetMTXGameCategories request");
var categories = await _catalogService.GetCategories();
var response = new SynergyResponse<List<CatalogCategory>>
{
resultCode = 0,
message = "Success",
data = categories
};
return Ok(response);
}
[HttpPost("getDownloadItemUrl")]
public async Task<ActionResult<SynergyResponse<object>>> GetDownloadUrl([FromBody] Dictionary<string, string> request)
{
var itemId = request.GetValueOrDefault("itemId", "");
_logger.LogInformation("GetDownloadItemUrl: {ItemId}", itemId);
var url = await _catalogService.GetDownloadUrl(itemId);
var response = new SynergyResponse<object>
{
resultCode = 0,
message = "Success",
data = new { downloadUrl = url }
};
return Ok(response);
}
}