Beispiel #1
0
        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);
        }
Beispiel #2
0
        public static MyRequestContext SetUserInfo(this MyRequestContext context, HttpRequest httpRequest)
        {
            var theGroup = context.GetOrCreate(context.GetGroupName_UserInfos());

            //todo
            return(context);
        }
Beispiel #3
0
        public static MyRouteInfo GetRouteInfo(this MyRequestContext context)
        {
            var info     = new MyRouteInfo();
            var theGroup = context.GetOrCreate(context.GetGroupName_RouteInfos());

            theGroup.Items.SetProperties(info);
            return(info);
        }
Beispiel #4
0
        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);
        }
        internal static MyContextGroup GetOrCreate(this MyRequestContext context, string group)
        {
            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)
            {
                theGroup = new MyContextGroup {
                    GroupName = @group
                };
                context.Groups.Add(theGroup);
            }
            return(theGroup);
        }
Beispiel #7
0
 public static string GetGroupName_RouteInfos(this MyRequestContext context)
 {
     return(Group_RouteInfos);
 }
        public static MyRequestContext Create()
        {
            var context = new MyRequestContext();

            return(context);
        }