internal static class ParseHelpers { private static JavaScriptSerializer json; private static JavaScriptSerializer Json { get { return json ?? (json = new JavaScriptSerializer()); } } public static Stream ToStream(this string @this) { var stream = new MemoryStream(); var writer = new StreamWriter(stream); writer.Write(@this); writer.Flush(); stream.Position = 0; return stream; } public static T ParseXml<T>(this string @this) where T : class { var reader = XmlReader.Create(@this.Trim().ToStream(), new XmlReaderSettings() { ConformanceLevel = ConformanceLevel.Document }); return new XmlSerializer(typeof(T)).Deserialize(reader) as T; } public static T ParseJson<T>(this string @this) where T : class { return Json.Deserialize<T>(@this.Trim()); } public static string ToOnlyAlphaNumericInput(this string input) { if (input == null) { return null; } return Regex.Replace(input, @"[^\w]", string.Empty); } public static string ToOnlyNormalTextInput(this string input) { if (input == null) { return null; } return Regex.Replace(input, @"[^\w\.@!? ,/:+()'´-]", string.Empty); } }
Tuesday, October 22, 2019
XML, C# - Parse To XML Example
Friday, October 11, 2019
Episerver - Handle Canonical Links
/// <summary> /// Handle Canonical /// </summary> public static string SetupCanonicalUrl(SitePageData currentPage, HttpContext cont) { if (currentPage == null) { return string.Empty; } var externalUrl = currentPage.PageLink.GetExternalUrl(); //Is Simple URL: Check if (!string.IsNullOrEmpty(currentPage.ExternalURL) && String.Compare(currentPage.ExternalURL, cont.Request.Url.Segments.Last().Replace("/", ""), StringComparison.OrdinalIgnoreCase) == 0) { //If 404 page no canoncial otherwise canonical var baseType = currentPage.GetType().BaseType; if (baseType != null && (!string.IsNullOrEmpty(externalUrl) && baseType.Name != typeof(NotFoundPage).Name)) { return WriteCanonicalLink(externalUrl); } } else { //Set Canonical if SEO override is set. if (currentPage.SetUniqueCanoncial != null) { return WriteCanonicalLink(currentPage.SetUniqueCanoncial); } //Ordinary Canonical return WriteCanonicalLink(externalUrl); } return string.Empty; } private static string WriteCanonicalLink(String externalUrl) { HtmlLink canonicalLink = new HtmlLink(); canonicalLink.Attributes.Add("rel", "canonical"); canonicalLink.Href = externalUrl.TrimAndLower(); return canonicalLink.Href; }+
public static string GetExternalUrl(this PageData pageData) { var urlString = UrlResolver.Current.GetUrl(pageData.ContentLink, ((ILocalizable)pageData).Language.Name, new VirtualPathArguments { ForceCanonical = true }); if (string.IsNullOrEmpty(urlString)) { return urlString; } var uri = new Uri(urlString, UriKind.RelativeOrAbsolute); if (uri.IsAbsoluteUri) { return urlString; } if (!uri.IsAbsoluteUri) { var siteDefResolver = ServiceLocator.Current.GetInstance<ISiteDefinitionResolver>(); SiteDefinition siteDefinition = siteDefResolver.GetByContent( contentLink: pageData.ContentLink, fallbackToWildcard: true, fallbackToEmpty: true); return new Uri(siteDefinition.SiteUrl, uri).ToString(); } return urlString; }
Thursday, October 10, 2019
Episerver Rest API and Routing Example
/// <summary> /// The REST WEB API Configuration class /// </summary> [InitializableModule] [ModuleDependency(typeof(FrameworkInitialization))] public class WebApiConfig : IInitializableModule { public static string ApiRoute = "api"; public void Initialize(InitializationEngine contextd) { // Enable Web API routing GlobalConfiguration.Configure(config => { // Attribute routing config.MapHttpAttributeRoutes(); var formatters = GlobalConfiguration.Configuration.Formatters; var jsonFormatter = formatters.JsonFormatter; var settings = jsonFormatter.SerializerSettings; var enumConverter = new Newtonsoft.Json.Converters.StringEnumConverter(); jsonFormatter.SerializerSettings.Converters.Add(enumConverter); settings.Formatting = Formatting.Indented; config.Formatters.Remove(config.Formatters.XmlFormatter); // config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "RestAPI", routeTemplate: ApiRoute + "/{controller}/{id}", defaults: new {id = RouteParameter.Optional}); }); } public void Uninitialize(InitializationEngine context) { throw new NotImplementedException(); } }
[RoutePrefix("api")] public class RestApiController : ApiController { [HttpGet] [Route("methods")] public string MethodsIndex() { //do something } }
Monday, October 7, 2019
c# - Memory Cache example and call to async method.
public static T GetRestObjectFromServiceOrCache<T>(string cacheItemName, Func<int, T> objectMethod, int id) { var expiration = CommonFactory.GetSettingsPage().RewardCategoryCacheTime == 0 ? DateTime.Now.AddHours(24) : DateTime.Now.AddHours(CommonFactory.GetSettingsPage().RewardCategoryCacheTime); ObjectCache cache = MemoryCache.Default; var cachedObject = (T)cache[cacheItemName]; if (cachedObject == null) { CacheItemPolicy policy = new CacheItemPolicy { AbsoluteExpiration = expiration }; cachedObject = objectMethod(id); cache.Set(cacheItemName, cachedObject, policy); } return cachedObject; }
var rewards = Task.Run(async () => await RestApiHelper.GetShopGroup(RestApiHelper.PartnerSe, id)).Result;
Subscribe to:
Posts (Atom)