public IDictionary <string, string> GetParameters()
        {
            var dictionary   = new Dictionary <string, string>();
            var queryString  = http.Context.Request.QueryString;
            var allKeys      = queryString.AllKeys;
            var config       = new WebConfigConfigurationLoader().GetConfiguration();
            var sessionParam = config.SessionMode == DotlessSessionStateMode.QueryParam ? config.SessionQueryParamName : null;

            foreach (var key in allKeys)
            {
                if (key != null)
                {
                    if (key.Equals(sessionParam, StringComparison.OrdinalIgnoreCase) || !_keyWhitelist.IsMatch(key))
                    {
                        continue;
                    }

                    string s = queryString[key];

                    if (!_valueWhitelist.IsMatch(s))
                    {
                        continue;
                    }

                    dictionary.Add(key, s);
                }
            }
            return(dictionary);
        }
Exemple #2
0
 public static ILessEngine GetEngine(DotlessConfiguration config)
 {
     if (config == null)
     {
         config = new WebConfigConfigurationLoader().GetConfiguration();
     }
     return(new EngineFactory(config).GetEngine(new AspNetContainerFactory()));
 }
Exemple #3
0
        public IServiceLocator GetContainer()
        {
            if (_container == null)
            {
                lock (LockObject)
                {
                    if (_container == null)
                    {
                        DotlessConfiguration configuration = new WebConfigConfigurationLoader().GetConfiguration();
                        _container = CreateContainer(configuration);
                    }
                }
            }

            return new CommonServiceLocatorAdapter(_container);
        }
 public LessCssHttpHandler()
 {
     Config = new WebConfigConfigurationLoader().GetConfiguration();
     Container = new ContainerFactory().GetContainer(Config);
 }
Exemple #5
0
        internal static string Process(ref IEnumerable <BundleFile> files)
        {
            DotlessConfiguration lessConfig = new WebConfigConfigurationLoader().GetConfiguration();

            if (!lessConfig.LessSource.GetInterfaces().Contains(typeof(IFileReaderWithResolver)))
            {
                lessConfig.LessSource = typeof(LessVirtualFileReader);
            }

            // system.Web.Optimization cache is used instead
            lessConfig.CacheEnabled = false;

            var content = new StringBuilder();

            var targetFiles = new List <BundleFile>();

            foreach (BundleFile bundleFile in files)
            {
                // initialize the less engine once for each file.
                // this is to prevent leaking state between files
                ILessEngine lessEngine           = LessWeb.GetEngine(lessConfig);
                LessEngine  underlyingLessEngine = lessEngine.ResolveLessEngine();
                Parser      lessParser           = underlyingLessEngine.Parser;

                targetFiles.Add(bundleFile);
                string filePath = bundleFile.IncludedVirtualPath;
                filePath = filePath.Replace('\\', '/');
                filePath = VirtualPathUtility.ToAppRelative(filePath);

                lessParser.SetCurrentFilePath(filePath);
                string source    = bundleFile.ApplyTransforms();
                string extension = VirtualPathUtility.GetExtension(filePath);

                // if plain CSS file, do not transform LESS
                if (lessConfig.ImportAllFilesAsLess ||
                    ".less".Equals(extension, StringComparison.InvariantCultureIgnoreCase) ||
                    ".less.css".Equals(extension, StringComparison.InvariantCultureIgnoreCase))
                {
                    string lessOutput = lessEngine.TransformToCss(source, filePath);

                    // pass the transformation result if successful
                    if (lessEngine.LastTransformationSuccessful)
                    {
                        source = lessOutput;
                    }
                    else
                    {
                        // otherwise write out error message.
                        // the transformation error is logged in LessEngine.TransformToCss
                        if (lessConfig.Debug)
                        {
                            content.AppendLine(string.Format(
                                                   "/* Error occurred in LESS transformation of the file: {0}. Please see details in the dotless log */",
                                                   bundleFile.IncludedVirtualPath));
                        }
                        continue;
                    }
                }

                source = ConvertUrlsToAbsolute(bundleFile.IncludedVirtualPath, source);

                content.AppendLine(source);

                BundleFile[] fileDependencies = GetFileDependencies(underlyingLessEngine).ToArray();
                targetFiles.AddRange(fileDependencies);

                DependencyCache.SaveFileDependencies(filePath, fileDependencies.Select(file => file.IncludedVirtualPath).ToArray());
            }

            // include imports in bundle files to register cache dependencies
            files = BundleTable.EnableOptimizations ? targetFiles.Distinct() : targetFiles;

            return(content.ToString());
        }