// Copyright © WireMock.Net and mock4net by Alexandre Victoor // This source file is based on mock4net by Alexandre Victoor which is licensed under the Apache 2.0 License. // For more details see 'mock4net/LICENSE.txt' and 'mock4net/readme.md' in this project root. using System.Collections.Generic; using System.Linq; using WireMock.ResponseBuilders; using WireMock.Types; using WireMock.Util; using Stef.Validation; namespace WireMock; /// /// The ResponseMessage. /// public class ResponseMessage : IResponseMessage { /// public IDictionary>? Headers { get; set; } = new Dictionary>(); /// public IDictionary>? TrailingHeaders { get; set; } = new Dictionary>(); /// public object? StatusCode { get; set; } /// public string? BodyOriginal { get; set; } /// public string? BodyDestination { get; set; } /// public IBodyData? BodyData { get; set; } /// public FaultType FaultType { get; set; } /// public double? FaultPercentage { get; set; } /// public void AddHeader(string name, string value) { Headers ??= new Dictionary>(); Headers.Add(name, value); } /// public void AddHeader(string name, params string[] values) { Guard.NotNullOrEmpty(values); Headers ??= new Dictionary>(); var newHeaderValues = Headers.TryGetValue(name, out var existingValues) ? values.Union(existingValues).ToArray() : values; Headers[name] = newHeaderValues; } /// public void AddTrailingHeader(string name, string value) { TrailingHeaders ??= new Dictionary>(); TrailingHeaders.Add(name, value); } /// public void AddTrailingHeader(string name, params string[] values) { Guard.NotNullOrEmpty(values); TrailingHeaders ??= new Dictionary>(); var newHeaderValues = TrailingHeaders.TryGetValue(name, out var existingValues) ? values.Union(existingValues).ToArray() : values; TrailingHeaders[name] = newHeaderValues; } }