/// <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)); }
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)); }
/// <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"]; } }
/// <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); }
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); }
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));; }
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)); }
public ValidationResult(ExecutionRequest request, string messageDelimiter = null) { _toValidate = request; Delimiter = messageDelimiter ?? ",\r\n"; }
public abstract bool RequestIsAllowed(ExecutionRequest request, out string failureMessage);
public static string GetStringToHash(ExecutionRequest request) { return(GetStringToHash(request.ClassName, request.MethodName, request.JsonParams)); }
protected internal JavaScriptResult JavaScript(ExecutionRequest request) { return(JavaScript(request.Result.ToString())); }
protected static void OnAnyInstanciated(ExecutionRequest request) { AnyInstanciated?.Invoke(request); }
protected internal CsvResult Csv(ExecutionRequest request) { return(new CsvResult(request.Result, request.MethodName)); }
protected internal CsvResult Text(ExecutionRequest request) { return(Csv(request)); }
protected internal XmlResult Xml(ExecutionRequest request) { return(new XmlResult(request.Result)); }
protected internal JsonResult Json(ExecutionRequest request) { return(Json(request.Result, JsonRequestBehavior.AllowGet)); }
protected internal JsonpResult Jsonp(ExecutionRequest request) { return(new JsonpResult(request.Result, request.Callback)); }