public void OpenFile_ReturnsCorrectContent(string urlPath)
        {
            var info         = _fileProvider.MapUrlPath(urlPath, _mimeTypeProvider);
            var expectedText = StockResource.GetText(urlPath, Encoding.UTF8);

            using var stream = _fileProvider.OpenFile(info.Path);
            using var reader = new StreamReader(stream, Encoding.UTF8, false, WebServer.StreamCopyBufferSize, true);
            var actualText = reader.ReadToEnd();

            Assert.AreEqual(expectedText, actualText, "Content is the same as embedded resource");
        }
 private void OnLoadLayoutFromFile(object sender, EventArgs e)
 {
     using (Stream stream = _fileProvider.OpenFile())
     {
         if (stream == Stream.Null)
         {
             return;
         }
         LoadLayoutFromStream(stream);
     }
 }
        // TODO maybe move some (or all) of this to the TemplateResolver
        public static TemplateInfo Load(TemplateResolver resolver, IFileProvider source, string name)
        {
            string specPath = System.IO.Path.Combine(name, Template.TemplateDefinitionFileName);
            if (!source.FileExists(specPath))
                throw new FileNotFoundException("Couldn't find template specification: " + specPath + " from " + source.ToString(), specPath);

            Dictionary<string, TemplateParameterInfo> parameters = new Dictionary<string, TemplateParameterInfo>();

            TemplateInfo inheritedTemplate = null;

            using (var fileStream = source.OpenFile(specPath, FileMode.Open))
            {
                XDocument templateSpec = XDocument.Load(fileStream);
                XAttribute inheritsAttr = templateSpec.Element("template").Attribute("inherits");
                
                if (inheritsAttr != null)
                {
                    string inheritedTemplateName = inheritsAttr.Value;
                    if (!resolver.TryResolve(inheritedTemplateName, out inheritedTemplate))
                        throw new Exception("Failed to resolve inherted template: " + inheritedTemplateName);

                    // add inherited parameters
                    foreach (TemplateParameterInfo param in inheritedTemplate.Parameters)
                        parameters.Add(param.Name, param);
                }

                IEnumerable<XElement> parameterElements = templateSpec.XPathSelectElements("/template/parameter");
                foreach (XElement parameterElement in parameterElements)
                {
                    string paramName = parameterElement.Attribute("name").Value;
                    string defaultValue = ReadOptionalAttribute(parameterElement, "select");
                    string description = ReadOptionalAttribute(parameterElement, "description");

                    // add or override inherited parameter default value
                    parameters[paramName] = new TemplateParameterInfo(paramName, description, defaultValue);
                }
            }

            return new TemplateInfo(source, specPath, name, parameters.Values.ToArray(), inheritedTemplate);
        }
Example #4
0
        /// <summary>
        /// The load stylesheet.
        /// </summary>
        /// <param name="fileProvider"><see cref="IFileProvider"/> used to load the stylesheet.</param>
        /// <param name="name">
        /// </param>
        /// <returns>
        /// </returns>
        private XslCompiledTransform LoadStylesheet(IFileProvider fileProvider, string name)
        {
            XslCompiledTransform ret = new XslCompiledTransform(true);

            using (Stream str = fileProvider.OpenFile(name, FileMode.Open))
            {
                XmlReader reader = XmlReader.Create(str, new XmlReaderSettings { CloseInput = true, });
                XsltSettings settings = new XsltSettings(false, true);
                XmlResolver resolver = new XmlFileProviderResolver(fileProvider);
                ret.Load(reader, settings, resolver);
            }

            return ret;
        }