Beispiel #1
0
        /// <summary>
        /// The action that is executed for all ServiceProxy requests.  This method
        /// returns an ActionResult based on the specified file extension.
        /// </summary>
        /// <param name="className"></param>
        /// <param name="methodName"></param>
        /// <param name="ext"></param>
        /// <param name="jsonParams"></param>
        /// <param name="view"></param>
        /// <returns></returns>
        public ActionResult Post(
            string className,
            string methodName,
            string ext,
            string jsonParams = null,
            string view       = null)
        {
            ExecutionRequest request = new ExecutionRequest
            {
                ClassName  = className,
                MethodName = methodName,
                Ext        = ext,
                JsonParams = jsonParams,
                ViewName   = view ?? "Default",
                Context    = new HttpContextWrapper(ControllerContext.HttpContext)
            };

            try
            {
                request.Execute();
            }
            catch (Exception ex)
            {
                string format = "An error occurred executing {0}.{1}: {2}\r\n{3}";
                request.Result = (object)string.Format(format, className, methodName, ex.Message, ex.StackTrace ?? "");
                Log.AddEntry(format, ex, className, methodName, ex.Message, ex.StackTrace ?? "");
            }

            return(GetActionResult(request));
        }
Beispiel #2
0
        private static ActionResult GetActionResult(ExecutionRequest jsProxyRequest)
        {
            ExecutionResultDelegate handler;

            handler = _actions["json"];
            if (!string.IsNullOrEmpty(jsProxyRequest.Ext) && _actions.ContainsKey(jsProxyRequest.Ext))
            {
                handler = _actions[jsProxyRequest.Ext];
            }

            return(handler(jsProxyRequest));
        }
Beispiel #3
0
 /// <summary>
 /// Decrypt the input string of the specified ExecutionRequest
 /// if it is intended for the SecureChannel
 /// </summary>
 /// <param name="execRequest"></param>
 public static void DecryptSecureChannelInvoke(ExecutionRequest execRequest)
 {
     if (execRequest.Instance != null &&
         execRequest.Instance.GetType() == typeof(SecureChannel) &&
         execRequest.MethodName.Equals(nameof(SecureChannel.Invoke)))
     {
         execRequest.InputString = SecureSession.Get(execRequest.Context).Decrypt(execRequest.InputString);
         HttpArgs args = new HttpArgs();
         args.ParseJson(execRequest.InputString);
         execRequest.JsonParams = args["jsonParams"];
     }
 }
Beispiel #4
0
        /// <summary>
        /// Analyzes the specified IHttpContext, Incubator and ProxyAlias array
        /// and returns an ExecutionRequest configured and ready for execution.
        /// </summary>
        /// <param name="httpContext"></param>
        /// <param name="serviceProvider"></param>
        /// <param name="aliases"></param>
        /// <returns></returns>
        public virtual ExecutionRequest ResolveExecutionRequest(IHttpContext httpContext, Incubator serviceProvider, params ProxyAlias[] aliases)
        {
            // TODO: refactor this method to analyze httpContext.Request.ContentType
            // See ExecutionRequest.GetArguments see commit (2526558ea460852c033d1151dc190308a9feaefd)
            ExecutionRequest execRequest = new ExecutionRequest(httpContext, serviceProvider, aliases)
            {
                Logger = Logger ?? Log.Default
            };

            ExecutionRequest.DecryptSecureChannelInvoke(execRequest);
            return(execRequest);
        }
Beispiel #5
0
        public static ExecutionRequest Create(Incubator incubator, MethodInfo method, params object[] parameters)
        {
            ExecutionRequest request = new ExecutionRequest()
            {
                ServiceProvider = incubator,
                MethodName      = method.Name,
                MethodInfo      = method,
                IsInitialized   = true,
                Arguments       = parameters,
                ClassName       = method.DeclaringType.Name,
                TargetType      = method.DeclaringType
            };

            return(request);
        }
Beispiel #6
0
        public ActionResult Get(string className, string methodName, string ext)
        {
            ExecutionRequest request = new ExecutionRequest(className, methodName, ext);

            request.Request  = new RequestWrapper(Request);
            request.Response = new ResponseWrapper(Response);
            try
            {
                request.Execute();
            }
            catch (Exception ex)
            {
                string format = "An error occurred executing {0}.{1}: {2}\r\n{3}";
                request.Result = (object)string.Format(format, className, methodName, ex.Message, ex.StackTrace ?? "");
                Log.AddEntry(format, ex, className, methodName, ex.Message, ex.StackTrace ?? "");
            }

            return(GetActionResult(request));;
        }
Beispiel #7
0
        protected internal PartialViewResult Html(ExecutionRequest request)
        {
            string viewName = string.Format("Void/{0}", request.ViewName);

            if (request.Result != null)
            {
                Type t = request.Result.GetType();
                viewName = string.Format("{0}/{1}", t.Name, request.ViewName);
                if (!ServiceProxySystem.ServiceProxyPartialExists(t, request.ViewName))
                {
                    ServiceProxySystem.WriteServiceProxyPartial(t, request.ViewName);
                }
            }
            else if (!ServiceProxySystem.ServiceProxyPartialExists("Void", request.ViewName))
            {
                ServiceProxySystem.WriteVoidServiceProxyPartial(request.ViewName);
            }

            return(PartialView(viewName, request.Result));
        }
Beispiel #8
0
 public ValidationResult(ExecutionRequest request, string messageDelimiter = null)
 {
     _toValidate = request;
     Delimiter   = messageDelimiter ?? ",\r\n";
 }
Beispiel #9
0
 public abstract bool RequestIsAllowed(ExecutionRequest request, out string failureMessage);
Beispiel #10
0
 public static string GetStringToHash(ExecutionRequest request)
 {
     return(GetStringToHash(request.ClassName, request.MethodName, request.JsonParams));
 }
Beispiel #11
0
 protected internal JavaScriptResult JavaScript(ExecutionRequest request)
 {
     return(JavaScript(request.Result.ToString()));
 }
Beispiel #12
0
 protected static void OnAnyInstanciated(ExecutionRequest request)
 {
     AnyInstanciated?.Invoke(request);
 }
Beispiel #13
0
 protected internal CsvResult Csv(ExecutionRequest request)
 {
     return(new CsvResult(request.Result, request.MethodName));
 }
Beispiel #14
0
 protected internal CsvResult Text(ExecutionRequest request)
 {
     return(Csv(request));
 }
Beispiel #15
0
 protected internal XmlResult Xml(ExecutionRequest request)
 {
     return(new XmlResult(request.Result));
 }
Beispiel #16
0
 protected internal JsonResult Json(ExecutionRequest request)
 {
     return(Json(request.Result, JsonRequestBehavior.AllowGet));
 }
Beispiel #17
0
 protected internal JsonpResult Jsonp(ExecutionRequest request)
 {
     return(new JsonpResult(request.Result, request.Callback));
 }