internal static string GenerateRegexForURL(ModelListMethod mlm, MethodInfo mi) { Logger.Debug("Generating regular expression for model list method at path " + mlm.Path); string ret = "^(GET\t"; if (mlm.Host == "*") ret += ".+"; else ret+=mlm.Host; if (mi.GetParameters().Length > 0) { ParameterInfo[] pars = mi.GetParameters(); string[] regexs = new string[pars.Length]; for (int x = 0; x < pars.Length; x++) { Logger.Trace("Adding parameter " + pars[x].Name+"["+pars[x].ParameterType.FullName+"]"); regexs[x] = _GetRegexStringForParameter(pars[x]); } string path = string.Format((mlm.Path+(mlm.Paged ? (mlm.Path.Contains("?") ? "&" : "?")+"PageStartIndex={"+(regexs.Length-3).ToString()+"}&PageSize={"+(regexs.Length-2).ToString()+"}" : "")).Replace("?","\\?"), regexs); ret += (path.StartsWith("/") ? path : "/" + path).TrimEnd('/'); } else ret += (mlm.Path.StartsWith("/") ? mlm.Path : "/" + mlm.Path).Replace("?", "\\?").TrimEnd('/'); Logger.Trace("Regular expression constructed: " + ret + ")$"); return ret+")$"; }
public sModelListCall(ModelListMethod mlm, MethodInfo method) { _isPaged = mlm.Paged; _path = mlm.Path; _reg = new Regex(URLUtility.GenerateRegexForURL(mlm, method),RegexOptions.ECMAScript|RegexOptions.Compiled); _method = method; }
internal static string CreateJavacriptUrlCode(ModelListMethod mlm,MethodInfo mi, Type modelType) { Logger.Debug("Creating the javascript url call for the model list method at path " + mlm.Path); ParameterInfo[] pars = mi.GetParameters(); if (pars.Length > 0) { string[] pNames = new string[pars.Length]; for (int x = 0; x < (mlm.Paged ? pars.Length -3 : pars.Length); x++) { StringBuilder sb = new StringBuilder(); sb.Append("'+("); if (pars[x].ParameterType == typeof(bool)) sb.AppendFormat("{0}==undefined ? 'false' : ({0}==null ? 'false' : ({0} ? 'true' : 'false')))+'",pars[x].Name); else if (pars[x].ParameterType == typeof(DateTime)) sb.AppendFormat("{0}==undefined ? 'NULL' : ({0}==null ? 'NULL' : _.extractUTCDate({0})))+'",pars[x].Name); else sb.AppendFormat("{0}==undefined ? 'NULL' : ({0} == null ? 'NULL' : {0}))+'",pars[x].Name); pNames[x] = sb.ToString(); } return "var url='" + string.Format((mlm.Path.StartsWith("/") ? mlm.Path : "/" + mlm.Path).TrimEnd('/'), pNames) + "';"; } else return "var url='" + (mlm.Path.StartsWith("/") ? mlm.Path : "/" + mlm.Path).TrimEnd('/') + "';"; }