// 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;
}
}