Swagger Generator: Merge multiple documents

It's becoming very hard to edit the swagger file as it grows (especially with multiple PRs altering it). This PR allows the swagger file to be generated from multiple jsons instead which are merged in the controller.
This commit is contained in:
Kukks
2020-04-01 15:48:39 +02:00
parent 238d4fceea
commit 41cc79600a
5 changed files with 391 additions and 366 deletions

View File

@@ -116,10 +116,14 @@ namespace BTCPayServer.Controllers
[Route("swagger/v1/swagger.json")]
public async Task<IActionResult> Swagger()
{
var fi = _fileProvider.GetFileInfo("swagger/v1/swagger.template.json");
using var stream = fi.CreateReadStream();
using var reader = new StreamReader(fi.CreateReadStream());
var json = JObject.Parse(await reader.ReadToEndAsync());
JObject json = new JObject();
var directoryContents = _fileProvider.GetDirectoryContents("swagger/v1");
foreach (IFileInfo fi in directoryContents)
{
await using var stream = fi.CreateReadStream();
using var reader = new StreamReader(fi.CreateReadStream());
json.Merge(JObject.Parse(await reader.ReadToEndAsync()));
}
var servers = new JArray();
servers.Add(new JObject(new JProperty("url", HttpContext.Request.GetAbsoluteRoot())));
json["servers"] = servers;