public void Configure(JsModelsConfiguration configuration)
        {
            // save path
            Path = configuration.Path;

            // compute js
            var generator = new JsModelGenerator(configuration.Models);
            _js = generator.GenerateModels(configuration.Models);

            // minify
            _js = (new Minifier()).MinifyJavaScript(_js);

            // get version hash
            var encoding = new UTF8Encoding();
            var bytes = encoding.GetBytes(_js);
            VersionHash = Convert.ToBase64String(SHA512.Create().ComputeHash(bytes));

            // compress and read out to byte array
            using (var ms = new MemoryStream())
            {
                using (var stream = new GZipStream(ms, CompressionLevel.Optimal, false))
                {
                    stream.Write(bytes, 0, bytes.Length);
                }
                _jsCompressed = ms.ToArray();
            }
        }
        public void ConfigureJsModels(IAppBuilder app)
        {
            var config = new JsModelsConfiguration();
            config.Models.AddRange(new[] {typeof (SampleModel), typeof (SampleChildModel)});

            app.MapJsModels(config);
        }
 private static void Configuration(IAppBuilder appBuilder, JsModelsConfiguration configuration)
 {
     var middleware = JsModelMiddleware.Instance;
     middleware.Configure(configuration);
     appBuilder.Run(middleware.Invoke);
 }
 /// <summary>
 /// Maps JsModelsto the app builder pipeline at "/jsmodels".
 /// </summary>
 /// <param name="appBuilder">The app builder</param>
 /// <param name="configuration"></param>
 public static IAppBuilder MapJsModels(this IAppBuilder appBuilder, JsModelsConfiguration configuration)
 {
     return appBuilder.Map(configuration.Path, subBuilder => Configuration(subBuilder, configuration));
 }