Exemplo n.º 1
0
		/// <summary>
		/// 
		/// </summary>
		/// <param name="CssFileName"></param>
		/// <returns></returns>
		async protected Task<HttpStaticFileServer.ResultStruct> CssHandler(HttpStaticFileServer.HandlerStruct Parameter)
		{
			var FileSystem = Parameter.FileSystem;

			var CssFileName = Parameter.FilePath;

			var CssFileInfo = await FileSystem.GetFileInfoAsync(CssFileName);
			string RealFilePath;
			string CssFile;
			byte[] CssByteArray;
			DateTime LastWriteTimeUtc;

			if (CssFileInfo.Exists)
			{
				RealFilePath = CssFileName;
				CssFile = await FileSystem.ReadAsTextAsync(CssFileName, Encoding.UTF8);
				CssByteArray = Encoding.UTF8.GetBytes(CssFile);
				LastWriteTimeUtc = CssFileInfo.LastWriteTimeUtc;
			}
			else
			{
				var LessFileName = CssFileName.FullPathWithoutExtension + ".less";
				var LessFileInfo = await FileSystem.GetFileInfoAsync(LessFileName);
				RealFilePath = LessFileName;
				CssFile = await TransformAsync(await FileSystem.ReadAsTextAsync(LessFileName, Encoding.UTF8), LessFileName);
				Parameter.AddCacheRelatedFile(LessFileName);
				LastWriteTimeUtc = LessFileInfo.LastWriteTimeUtc;
			}

			//Console.WriteLine("[1]");

			if (Compressing)
			{
				CssFile = await Compressor.CompressCssAsync(CssFile);
			}

			//Console.WriteLine("[2]");

			CssByteArray = Encoding.UTF8.GetBytes(CssFile);

			return new HttpStaticFileServer.ResultStruct()
			{
				ContentType = "text/css",
				Data = CssByteArray,
				RealFilePath = RealFilePath,
				FileInfo = new VirtualFileInfo()
				{
					Length = CssByteArray.Length,
					LastWriteTimeUtc = LastWriteTimeUtc,
				}
			};
		}
Exemplo n.º 2
0
		/// <summary>
		/// 
		/// </summary>
		/// <param name="Parameter"></param>
		/// <returns></returns>
		protected Task<HttpStaticFileServer.ResultStruct> LessHandler(HttpStaticFileServer.HandlerStruct Parameter)
		{
			throw (new HttpException(HttpCode.NOT_FOUND_404));
		}
Exemplo n.º 3
0
		/// <summary>
		/// 
		/// </summary>
		/// <param name="HttpStaticFileServer"></param>
		void IHttpStaticFilter.RegisterFilters(HttpStaticFileServer HttpStaticFileServer)
		{
			HttpStaticFileServer.AddExtensionHandler("css", CssHandler);
			HttpStaticFileServer.AddExtensionHandler("less", LessHandler);
		}
Exemplo n.º 4
0
		/// <summary>
		/// 
		/// </summary>
		/// <param name="Parameter"></param>
		/// <returns></returns>
		async protected Task<HttpStaticFileServer.ResultStruct> JsHandler(HttpStaticFileServer.HandlerStruct Parameter)
		{
			var FileSystem = Parameter.FileSystem;
			var JsFileName = Parameter.FilePath;
			var JsxFileName = Parameter.FilePath.FullPathWithoutExtension + ".jsx";
			var JsFileInfo = await Parameter.FileSystem.GetFileInfoAsync(JsFileName);
			var JsxFileInfo = await Parameter.FileSystem.GetFileInfoAsync(JsxFileName);
			DateTime CombinedJsDateTimeUtc = new DateTime();
			string CombinedJsFile = "";

			// A .jsx file exists
			if (JsxFileInfo.Exists)
			{
				Parameter.AddCacheRelatedFile(JsxFileName);

				var JsxFile = await FileSystem.ReadAsTextAsync(JsxFileName, Encoding.UTF8);
				foreach (var _Part in JsxFile.Split('\n', '\r'))
				{
					var JsComponentFileName = _Part.Trim();
					if (JsComponentFileName.Length > 0)
					{
						Parameter.AddCacheRelatedFile(JsComponentFileName);

						var JsComponentFileInfo = await FileSystem.GetFileInfoAsync(JsComponentFileName);

						CombinedJsFile += await FileSystem.ReadAsTextAsync(JsComponentFileName, Encoding.UTF8);
						if (CombinedJsDateTimeUtc < JsComponentFileInfo.LastWriteTimeUtc)
						{
							CombinedJsDateTimeUtc = JsComponentFileInfo.LastWriteTimeUtc;
						}
						//
						//Console.WriteLine(Part);
					}
				}
			}
			// Not existing a .jsx file, serve the .js file
			else
			{
				CombinedJsFile = await FileSystem.ReadAsTextAsync(JsFileName, Encoding.UTF8);
				CombinedJsDateTimeUtc = JsFileInfo.LastWriteTimeUtc;
			}

			if (this.Compressing)
			{
				CombinedJsFile = await Compressor.CompressJavaScriptAsync(CombinedJsFile);
			}

			var JsFileArray = Encoding.UTF8.GetBytes(CombinedJsFile);

			return new HttpStaticFileServer.ResultStruct()
			{
				ContentType = "text/javascript",
				Data = JsFileArray,
				RealFilePath = JsFileName,
				FileInfo = new VirtualFileInfo()
				{
					Length = JsFileArray.Length,
					LastWriteTimeUtc = CombinedJsDateTimeUtc,
				}
			};
		}
Exemplo n.º 5
0
		/// <summary>
		/// 
		/// </summary>
		/// <param name="HttpStaticFileServer"></param>
		void IHttpStaticFilter.RegisterFilters(HttpStaticFileServer HttpStaticFileServer)
		{
			HttpStaticFileServer.AddExtensionHandler("js", JsHandler);
			HttpStaticFileServer.AddExtensionHandler("jsx", JsxHandler);
		}
Exemplo n.º 6
0
			internal HandlerStruct(HttpStaticFileServer HttpStaticFileServer)
			{
				this.HttpStaticFileServer = HttpStaticFileServer;
			}