Aqueduct.Appia.Core.FileSystemViewSourceProvider.LocateView C# (CSharp) Method

LocateView() public method

Attemptes to locate the view, specified by the viewName parameter, in the underlaying source.
public LocateView ( string viewName, IEnumerable supportedViewEngineExtensions ) : Nancy.ViewEngines.ViewLocationResult
viewName string The name of the view that should be located.
supportedViewEngineExtensions IEnumerable The supported view engine extensions that the view is allowed to use.
return Nancy.ViewEngines.ViewLocationResult
        public ViewLocationResult LocateView(string viewName, IEnumerable<string> supportedViewEngineExtensions)
        {
            string prefix = GetViewPrefix(viewName);
            string processedViewName = GetViewName(viewName);

            var viewFolder = GetViewFolder(prefix, viewName);

            if (string.IsNullOrEmpty(viewFolder))
            {
                return null;
            }

            var filesInViewFolder =
                Directory.GetFiles(viewFolder);

            var viewsFiles =
                from file in filesInViewFolder
                from extension in supportedViewEngineExtensions
                where Path.GetFileName(file).Equals(string.Concat(processedViewName, ".", extension), StringComparison.OrdinalIgnoreCase)
                select new
                {
                    file,
                    extension
                };

            var selectedView =
                viewsFiles.FirstOrDefault();

            var fileStream = new FileStream(selectedView.file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

            return new ViewLocationResult(
                selectedView.file,
                selectedView.extension,
                new StreamReader(fileStream)
            );
        }