-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathResponseSampleProcessor.cs
39 lines (32 loc) · 1.27 KB
/
ResponseSampleProcessor.cs
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
using NSwag;
using NSwag.Generation.Processors;
using NSwag.Generation.Processors.Contexts;
using Stocks.NSwag.Registers.ResponseSamples;
using System.Collections.Generic;
using System.Linq;
namespace Stocks.NSwag.Processors.OperationProcessors
{
internal class ResponseSampleProcessor : IOperationProcessor
{
private readonly ResponseSampleRegister _sampleRegister;
public ResponseSampleProcessor(ResponseSampleRegister sampleRegister)
{
_sampleRegister = sampleRegister;
}
public bool Process(OperationProcessorContext context)
{
var method = context.MethodInfo;
var responseSamples = _sampleRegister.GetResponseSamples(method);
if (responseSamples.Count > 0)
{
AddResponseSamples(context, responseSamples);
}
return true;
}
private void AddResponseSamples(OperationProcessorContext context, List<ResponseSample> samples)
{
var specificationExamples = context.OperationDescription.Operation.Responses["200"].Content.First().Value.Examples;
samples.ForEach(sample => specificationExamples.Add(sample.Name, new OpenApiExample { Value = sample.Body }) );
}
}
}