in openapi-diff/src/modeler/AutoRest.Swagger/Model/Response.cs [28:90]
public override IEnumerable<ComparisonMessage> Compare(
ComparisonContext<ServiceDefinition> context, OperationResponse previous)
{
var priorResponse = previous;
if (priorResponse == null)
{
throw new ArgumentNullException("previous");
}
if (context == null)
{
throw new ArgumentNullException("context");
}
context.Direction = DataDirection.Response;
base.Compare(context, previous);
var headers = Headers != null ? Headers : new Dictionary<string, Header>();
var priorHeaders = priorResponse.Headers != null ? priorResponse.Headers : new Dictionary<string, Header>();
context.PushProperty("headers");
foreach (var header in headers)
{
context.PushProperty(header.Key);
if (!priorHeaders.TryGetValue(header.Key, out var oldHeader))
{
context.LogInfo(ComparisonMessages.AddingHeader, header.Key);
}
else
{
header.Value.Compare(context, oldHeader);
}
context.Pop();
}
foreach (var header in priorHeaders)
{
context.PushProperty(header.Key);
if (!headers.TryGetValue(header.Key, out var newHeader))
{
context.LogBreakingChange(ComparisonMessages.RemovingHeader, header.Key);
}
context.Pop();
}
context.Pop();
// switch context to `schema` property.
context.PushProperty("schema");
if (Schema != null && priorResponse.Schema != null)
{
Schema.Compare(context, priorResponse.Schema);
}
context.Pop();
context.Direction = DataDirection.None;
return context.Messages;
}