internal static MyContextGroup GetOrCreate(this MyRequestContext context, string group, bool autoCreate = true) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (string.IsNullOrWhiteSpace(group)) { throw new ArgumentNullException(nameof(group)); } var theGroup = context.Groups.SingleOrDefault(x => x.GroupName == group); if (theGroup == null) { if (autoCreate) { theGroup = new MyContextGroup { GroupName = @group }; context.Groups.Add(theGroup); } } return(theGroup); }
public static MyRequestContext SetUserInfo(this MyRequestContext context, HttpRequest httpRequest) { var theGroup = context.GetOrCreate(context.GetGroupName_UserInfos()); //todo return(context); }
public static MyRequestContext SetQueryInfo(this MyRequestContext context, HttpRequest httpRequest) { var theGroup = context.GetOrCreate(context.GetGroupName_QueryInfos()); var queryCollection = httpRequest.Query; var keys = queryCollection.Keys; foreach (var key in keys) { StringValues values; if (!queryCollection.TryGetValue(key, out values)) { theGroup.Items[key] = null; } else { values = values.Where(x => !string.IsNullOrWhiteSpace(x)).ToArray(); foreach (var value in values) { //set by last one theGroup.Items[key] = value; } } } return(context); }
public static MyUserInfo GetUserInfo(this MyRequestContext context) { var info = new MyUserInfo(); var theGroup = context.GetOrCreate(context.GetGroupName_UserInfos()); theGroup.Items.SetProperties(info); return(info); }
public static MyRequestContext AppendPageInfos(this MyRequestContext context, ViewContext viewContext) { var theGroup = context.GetOrCreate(context.GetGroupName_PageInfos()); var myPageInfo = viewContext.CreateMyPageInfo(); theGroup.Items[viewContext.View.Path] = myPageInfo.ToJson(false); return(context); }
public static IList <MyPageInfo> GetPageInfos(this MyRequestContext context) { var myPageInfos = new List <MyPageInfo>(); var theGroup = context.GetOrCreate(context.GetGroupName_PageInfos(), false); if (theGroup == null) { return(myPageInfos); } var jsonList = theGroup.Items.Values.ToList(); return(jsonList.Select(x => x.FromJson <MyPageInfo>(null)).Where(x => x != null).ToList()); }
public static MyRequestContext SetRouteInfo(this MyRequestContext context, RouteData routeData) { if (context == null) { throw new ArgumentNullException(nameof(context)); } var theGroup = context.GetOrCreate(context.GetGroupName_RouteInfos()); foreach (var item in routeData.DataTokens) { theGroup.Items[item.Key] = item.Value?.ToString(); } foreach (var item in routeData.Values) { theGroup.Items[item.Key] = item.Value?.ToString(); } return(context); }
public static MyRequestContext GetMyRequestContext(this HttpContext context) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (context.Items[MyRequestContextCacheKey] != null) { return((MyRequestContext)context.Items[MyRequestContextCacheKey]); } var requestContext = MyRequestContext.Create() .SetRouteInfo(context.GetRouteData()) .SetQueryInfo(context.Request) .SetUserInfo(context.Request); context.Items[MyRequestContextCacheKey] = requestContext; return(requestContext); }
public static string GetGroupName_UserInfos(this MyRequestContext context) { return(Group_UserInfos); }
public static MyRequestContext Create() { var context = new MyRequestContext(); return(context); }