public Func<RequestInfo, object> TryGetBinder(ParameterInfo pi, HttpCmdAttribute attr)
 {
     if(pi.ParameterType == typeof(HttpListenerRequest))
     {
         return ri => ri.Context.Request;
     }
     return null;
 }
 public Func<RequestInfo, object> TryGetBinder(ParameterInfo pi, HttpCmdAttribute attr)
 {
     if (pi.ParameterType == typeof(IEnumerable<KeyValuePair<string, string>>))
     {
         return DecodeFormUrlEncoding;
     }
     return null;
 }
Ejemplo n.º 3
0
 public Func <RequestInfo, object> TryGetBinder(ParameterInfo pi, HttpCmdAttribute attr)
 {
     if (pi.ParameterType == typeof(HttpListenerRequest))
     {
         return(ri => ri.Context.Request);
     }
     return(null);
 }
Ejemplo n.º 4
0
 public Func <RequestInfo, object> TryGetBinder(ParameterInfo pi, HttpCmdAttribute attr)
 {
     if (pi.ParameterType == typeof(IEnumerable <KeyValuePair <string, string> >))
     {
         return(DecodeFormUrlEncoding);
     }
     return(null);
 }
        public Func<RequestInfo, object> TryGetBinder(ParameterInfo pi, HttpCmdAttribute attr)
        {
            if (pi.ParameterType == typeof(IPrincipal))
            {
                return ri => ri.User;
            }

            return null;
        }
Ejemplo n.º 6
0
        public Func <RequestInfo, object> TryGetBinder(ParameterInfo pi, HttpCmdAttribute attr)
        {
            if ((pi.ParameterType.IsPrimitive || pi.ParameterType.Equals(typeof(String))) && (attr.UriTemplate.PathSegmentVariableNames.Contains(pi.Name.ToUpper()) || attr.UriTemplate.QueryValueVariableNames.Contains(pi.Name.ToUpper())))
            {
                return(ri => Convert.ChangeType(ri.Match.BoundVariables[pi.Name], pi.ParameterType));
            }

            return(null);
        }
        public Func<RequestInfo, object> TryGetBinder(ParameterInfo pi, HttpCmdAttribute attr)
        {
            if((pi.ParameterType.IsPrimitive || pi.ParameterType.Equals(typeof(String))) && (attr.UriTemplate.PathSegmentVariableNames.Contains(pi.Name.ToUpper()) || attr.UriTemplate.QueryValueVariableNames.Contains(pi.Name.ToUpper())))
            {
                return ri => Convert.ChangeType(ri.Match.BoundVariables[pi.Name], pi.ParameterType);
            }

            return null;
        }
Ejemplo n.º 8
0
        private Func <RequestInfo, object> GetBinder(ParameterInfo pi, HttpCmdAttribute attr)
        {
            var b = _binder.TryGetBinder(pi, attr);

            if (b == null)
            {
                throw new Exception("Unable to find binder to " + pi.Name);
            }
            return(b);
        }
Ejemplo n.º 9
0
 public MethodBasedCommand(MethodInfo mi, HttpCmdAttribute attr, IEnumerable<Func<RequestInfo, object>> binders)
 {
     _mi = mi;
     _attr = attr;
     _binders = binders.ToArray();
 }
Ejemplo n.º 10
0
 public MethodBasedCommand(MethodInfo mi, HttpCmdAttribute attr, IEnumerable <Func <RequestInfo, object> > binders)
 {
     _mi      = mi;
     _attr    = attr;
     _binders = binders.ToArray();
 }
Ejemplo n.º 11
0
 private IEnumerable <Func <RequestInfo, object> > ResolveBindersFor(MethodInfo mi, HttpCmdAttribute attr)
 {
     return(mi.GetParameters().Select(p => GetBinder(p, attr)));
 }
 private IEnumerable<Func<RequestInfo, object>> ResolveBindersFor(MethodInfo mi, HttpCmdAttribute attr)
 {
     return mi.GetParameters().Select(p => GetBinder(p, attr));
 }
 private Func<RequestInfo, object> GetBinder(ParameterInfo pi, HttpCmdAttribute attr)
 {
     var b  = _binder.TryGetBinder(pi, attr);
     if(b == null) throw new Exception("Unable to find binder to "+pi.Name);
     return b;
 }
Ejemplo n.º 14
0
 public Func <RequestInfo, object> TryGetBinder(ParameterInfo pi, HttpCmdAttribute attr)
 {
     return(_coll.Select(b => b.TryGetBinder(pi, attr)).FirstOrDefault(f => f != null));
 }
 public Func<RequestInfo, object> TryGetBinder(ParameterInfo pi, HttpCmdAttribute attr)
 {
     return _coll.Select(b => b.TryGetBinder(pi, attr)).FirstOrDefault(f => f != null);
 }