Ejemplo n.º 1
0
        public static async Task <Node> Compile(Models.NodeDescriptor desc, Services.DataSourceService data, Services.ResourceCache resCache)
        {
            if (desc.Child != null && desc.Children != null)
            {
                throw new ArgumentException("Set either the 'Child' or 'Children' argument, not both.");
            }

            if (desc.Type == "data")
            {
                if (desc.Dataset == null)
                {
                    throw new ArgumentException("Missing 'Dataset' property");
                }

                return(await data.GetSource(desc.Dataset.Source).GetNode(desc.Dataset.Id, desc.Dataset.Variant, resCache));
            }
            else
            {
                if (desc.Child == null && desc.Children == null)
                {
                    throw new ArgumentException("A pipe must have either the 'Child' or the 'Children' argument.");
                }

                if (desc.Children != null)
                {
                    return(Pipe.CompilePipe(
                               desc.Type,
                               await Task.WhenAll(desc.Children.Select(c => Compile(c, data, resCache))),
                               desc.Options
                               ));
                }
                else
                {
                    return(Pipe.CompilePipe(
                               desc.Type,
                               await Compile(desc.Child, data, resCache),
                               desc.Options
                               ));
                }
            }
        }
Ejemplo n.º 2
0
 public DataController(ILogger <DataController> logger, Services.DataSourceService dataSources, Services.ResourceCache resCache)
 {
     _Logger      = logger;
     _DataSources = dataSources;
     _ResCache    = resCache;
 }
Ejemplo n.º 3
0
 public abstract Task <Node> GetNode(string id, string variant, Services.ResourceCache resCache);
Ejemplo n.º 4
0
        public override Task <Node> GetNode(string id, string variant, Services.ResourceCache resCache)
        {
            var dataset = _Datasets.Find(d => d.Id == id);

            return(Task.FromResult <Node>(new HPDataNode(this, dataset, variant, resCache)));
        }