Skip to content

Commit 048153c

Browse files
authored
Merge branch 'main' into timestamp
2 parents 8525277 + ea26b98 commit 048153c

File tree

2 files changed

+25
-5
lines changed

2 files changed

+25
-5
lines changed

dev-proxy-plugins/RequestLogs/OpenApiSpecGeneratorPlugin.cs

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,20 @@ internal enum SpecVersion
5050
v3_0
5151
}
5252

53+
[JsonConverter(typeof(JsonStringEnumConverter))]
54+
internal enum SpecFormat
55+
{
56+
Json,
57+
Yaml
58+
}
59+
5360
internal class OpenApiSpecGeneratorPluginConfiguration
5461
{
5562
public bool IncludeOptionsRequests { get; set; } = false;
5663

5764
public SpecVersion SpecVersion { get; set; } = SpecVersion.v3_0;
65+
66+
public SpecFormat SpecFormat { get; set; } = SpecFormat.Json;
5867
}
5968

6069
public class OpenApiSpecGeneratorPlugin(IPluginEvents pluginEvents, IProxyContext context, ILogger logger, ISet<UrlToWatch> urlsToWatch, IConfigurationSection? configSection = null) : BaseReportingPlugin(pluginEvents, context, logger, urlsToWatch, configSection)
@@ -364,7 +373,7 @@ request.Context is null ||
364373
foreach (var openApiDoc in openApiDocs)
365374
{
366375
var server = openApiDoc.Servers.First();
367-
var fileName = GetFileNameFromServerUrl(server.Url);
376+
var fileName = GetFileNameFromServerUrl(server.Url, _configuration.SpecFormat);
368377

369378
var openApiSpecVersion = _configuration.SpecVersion switch
370379
{
@@ -373,7 +382,12 @@ request.Context is null ||
373382
_ => OpenApiSpecVersion.OpenApi3_0
374383
};
375384

376-
var docString = openApiDoc.SerializeAsJson(openApiSpecVersion);
385+
var docString = _configuration.SpecFormat switch
386+
{
387+
SpecFormat.Json => openApiDoc.SerializeAsJson(openApiSpecVersion),
388+
SpecFormat.Yaml => openApiDoc.SerializeAsYaml(openApiSpecVersion),
389+
_ => openApiDoc.SerializeAsJson(openApiSpecVersion)
390+
};
377391

378392
Logger.LogDebug(" Writing OpenAPI spec to {fileName}...", fileName);
379393
File.WriteAllText(fileName, docString);
@@ -922,10 +936,16 @@ private void AddOrMergeResponse(OpenApiOperation operation, OpenApiResponses api
922936
MergeSchema(contentFromOperation.Schema, apiResponse.Content.First().Value.Schema);
923937
}
924938

925-
private static string GetFileNameFromServerUrl(string serverUrl)
939+
private static string GetFileNameFromServerUrl(string serverUrl, SpecFormat format)
926940
{
927941
var uri = new Uri(serverUrl);
928-
var fileName = $"{uri.Host}-{DateTime.Now:yyyyMMddHHmmss}.json";
942+
var ext = format switch
943+
{
944+
SpecFormat.Json => "json",
945+
SpecFormat.Yaml => "yaml",
946+
_ => "json"
947+
};
948+
var fileName = $"{uri.Host}-{DateTime.Now:yyyyMMddHHmmss}.{ext}";
929949
return fileName;
930950
}
931951

dev-proxy/dev-proxy.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
<PackageReference Include="Microsoft.OpenApi.Readers" Version="1.6.22" />
4040
<PackageReference Include="Microsoft.VisualStudio.Threading" Version="17.12.19" />
4141
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
42-
<PackageReference Include="Swashbuckle.AspNetCore" Version="7.1.0" />
42+
<PackageReference Include="Swashbuckle.AspNetCore" Version="7.2.0" />
4343
<PackageReference Include="System.CommandLine" Version="2.0.0-beta4.22272.1" />
4444
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.3.0" />
4545
<PackageReference Include="Unobtanium.Web.Proxy" Version="0.1.5" />

0 commit comments

Comments
 (0)