using Microsoft.AspNetCore.Mvc;
using Microsoft.CodeAnalysis.CSharp.Scripting;
using Microsoft.CodeAnalysis.Scripting;
using System;
using System.Threading.Tasks;
namespace DynamicScriptingAPI.Controllers
{
[ApiController]
[Route("api/[controller]")]
public class ScriptController : ControllerBase
{
[HttpPost]
public async Task<IActionResult> ExecuteScript([FromBody] ScriptRequest request)
{
try
{
// Compile the code
Script<object> script = CSharpScript.Create(request.Code)
.WithOptions(ScriptOptions.Default
.WithReferences(typeof(Console).Assembly));
// Execute the code
var result = await script.RunAsync();
// Return the result
return Ok(result.ReturnValue);
}
catch (CompilationErrorException ex)
{
return BadRequest(ex.Message);
}
catch (Exception ex)
{
return StatusCode(500, ex.Message);
}
}
}
public class ScriptRequest
{
public string Code { get; set; }
}
}