|
/*
* Smart Include
*
* Copyright (c) 2010 Fredrik Schultz
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
*/
using System;
using System.Configuration;
using System.IO;
using System.Web;
namespace Kaliko.SmartInclude {
internal class Common {
/// <summary>
/// Read parameter from the web.config file.
/// </summary>
/// <param name="key">Name of key</param>
/// <param name="defaultValue">If key not found, return this value as default</param>
/// <returns></returns>
internal static string ReadSetting(string key, string defaultValue) {
try {
object setting = ConfigurationManager.AppSettings[key];
if (setting != null && setting.ToString().Length == 0) {
setting = null;
}
return (setting == null) ? defaultValue : (String)setting;
}
catch {
return defaultValue;
}
}
/// <summary>
/// Checks if the web browser making the call can handle gziped content
/// </summary>
internal static bool IsGzipAccepted {
get {
return HttpContext.Current.Request.Headers.Get("Accept-Encoding").Contains("gzip");
}
}
/// <summary>
/// Checks if any files has been changed since last combine
/// </summary>
/// <param name="files">Array with files to combine</param>
/// <param name="newFile">The file they are combined to</param>
/// <param name="filepath"></param>
/// <returns></returns>
internal static bool HaveFilesBeenChanged(string[] files, string newFile, string filepath) {
if(File.Exists(filepath + newFile)) {
DateTime fileTime = File.GetLastWriteTime(filepath + newFile);
foreach(string file in files) {
if(new FileInfo(HttpContext.Current.Server.MapPath(file)).LastWriteTime > fileTime) {
return true;
}
}
return false;
}
return true;
}
/// <summary>
/// Get the hash code of a files last write time.
/// </summary>
/// <param name="filename">File to get write time has for</param>
/// <returns>Eight char hash code (hex format)</returns>
internal static string GetFileDateHash(string filename) {
return File.GetLastWriteTime(filename).GetHashCode().ToString("X").PadLeft(8, '0');
}
/// <summary>
/// Get the hash code of a string.
/// </summary>
/// <param name="text">String to be hashed</param>
/// <returns>Eight char hash code (hex format)</returns>
internal static string GetStringHash(string text) {
return text.GetHashCode().ToString("X").PadLeft(8, '0');
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.