-
Notifications
You must be signed in to change notification settings - Fork 19
Expand file tree
/
Copy pathSharpShellController.cs
More file actions
59 lines (54 loc) · 2.1 KB
/
Copy pathSharpShellController.cs
File metadata and controls
59 lines (54 loc) · 2.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// Author: Ryan Cobb (@cobbr_io)
// Project: SharpShell (https://github.com/cobbr/SharpShell)
// License: BSD 3-Clause
using System;
using System.IO;
using System.Linq;
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc;
using YamlDotNet.Serialization;
using SharpShell.API.Models;
namespace SharpShell.API.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class SharpShellController : ControllerBase
{
private readonly SharpShellContext _context;
public SharpShellController(SharpShellContext context)
{
this._context = context;
}
// POST api/sharpshell/compile
[HttpPost("compile")]
public ActionResult<string> PostCompile([FromBody] Compiler.CompilationRequest request = default(Compiler.CompilationRequest))
{
request.SourceDirectory = Common.SharpShellSourceDirectory;
request.ResourceDirectory = Common.SharpShellResourcesDirectory;
request.ReferenceDirectory = Common.SharpShellReferencesDirectory;
using (TextReader reader = System.IO.File.OpenText(Common.SharpShellReferencesConfig))
{
var deserializer = new DeserializerBuilder().Build();
request.References = deserializer.Deserialize<List<Compiler.Reference>>(reader)
.Where(R => R.Framework == request.TargetDotNetVersion)
.Where(R => R.Enabled)
.ToList();
}
using (TextReader reader = System.IO.File.OpenText(Common.SharpShellResourcesConfig))
{
var deserializer = new DeserializerBuilder().Build();
request.EmbeddedResources = deserializer.Deserialize<List<Compiler.EmbeddedResource>>(reader)
.Where(ER => ER.Enabled)
.ToList();
}
try
{
return Convert.ToBase64String(Compiler.Compile(request));
}
catch (CompilerException e)
{
return BadRequest(e.Message);
}
}
}
}