// Copyright © WireMock.Net using System.Collections.Generic; using System.Linq; using Stef.Validation; namespace WireMock.Models; /// /// A placeholder class for Proto Definitions. /// public class ProtoDefinitionData { private readonly IDictionary _filenameMappedToProtoDefinition; internal ProtoDefinitionData(IDictionary filenameMappedToProtoDefinition) { _filenameMappedToProtoDefinition = filenameMappedToProtoDefinition; } /// /// Get all the ProtoDefinitions. /// Note: the main ProtoDefinition will be the first one in the list. /// /// The main ProtoDefinition filename. public IReadOnlyList ToList(string mainProtoFilename) { Guard.NotNullOrEmpty(mainProtoFilename); if (!_filenameMappedToProtoDefinition.TryGetValue(mainProtoFilename, out var mainProtoDefinition)) { throw new KeyNotFoundException($"The ProtoDefinition with filename '{mainProtoFilename}' was not found."); } var list = new List { mainProtoDefinition }; list.AddRange(_filenameMappedToProtoDefinition.Where(kvp => kvp.Key != mainProtoFilename).Select(kvp => kvp.Value)); return list; } }