/// <summary> /// Calls an action on the extension with the parameters based on the settings specified in the inputParameters /// </summary> public virtual IPortalResponse CallAction(IPortalRequest request) { Request = request; if(!MethodInfos.ContainsKey(Request.Action)) MethodInfos.Add(Request.Action, GetType().GetMethod(Request.Action)); var method = MethodInfos[Request.Action]; if (method == null) throw new ActionMissingException(string.Format("No action ({0}) in extenion ({1})", Request.Extension, Request.Action)); var parameters = BindParameters(Request.Parameters, method.GetParameters()); try { var result = method.Invoke(this, parameters); WriteToOutput(result); } catch (TargetInvocationException e) { WriteToOutput(e.InnerException); PortalApplication.Log.Fatal("ProcessRequest() - Unhandeled exception occured during", e.InnerException); } return Response; }
public PortalResponse(IPortalRequest request) { WithResponseSpecification(ResponseSpecifications[request.ReturnFormat]); ReturnFormat = request.ReturnFormat; Callback = request.Parameters.ContainsKey("callback") ? request.Parameters["callback"] : null; Request = request; Encoding = Encoding.UTF8; Headers = new Dictionary<string, string>(); }
public object Create(object obj, IPortalRequest request, PortalResponse portalResponse) { var moduleName = "Portal"; var namedResult = obj as NamedResult; if (namedResult != null) { moduleName = namedResult.ModuleName; obj = namedResult.Obj; } return CreateWithModuleName(obj, request, moduleName, portalResponse); }
public override VirtualFile GetFile(string virtualPath) { IPortalRequest portalRequest = PortalContext.Current.Request; IViewResult result = portalRequest.Result as IViewResult; if (result != null && IsRouteFile(virtualPath)) { return(new RouteFile(virtualPath, portalRequest.Result)); } PortalTrace.Write("RoutePathProvider", "GetFile", "'{0}' is not a virtual portal file. Delegating to previous VirtualPathProvider.", virtualPath); if (Path.GetExtension(virtualPath) != ".aspx") { return(Previous.GetFile(virtualPath)); } return(portalRequest.AllowPhysicalPages ? Previous.GetFile(virtualPath) : new RouteFile(virtualPath, new FileNotFoundResult())); }
public PortalRequestArgs(IPortalRequest request) { Request = request; }
public IExtension WithPortalRequest(IPortalRequest request) { Request = request; return this; }
private static object CreateWithModuleName(object obj, IPortalRequest request, string moduleName, PortalResponse portalResponse) { if (obj == null) throw new NullReferenceException("Returned object is null"); var result = obj as IResult; var results = obj as IEnumerable<IResult>; var pagedResult = obj as IPagedResult<IResult>; var groupedResult = obj as IGroupedResult<IResult>; var uinteger = obj as uint?; var integer = obj as int?; var exception = obj as Exception; var attachment = obj as Attachment; if (result != null) { var response = new PortalResult(request.Stopwatch); response.GetModule(moduleName).AddResult(result); return response; } if (results != null) { var response = new PortalResult(request.Stopwatch); foreach (var item in results) response.GetModule(moduleName).AddResult(item); return response; } if (pagedResult != null) { var response = new PortalResult(request.Stopwatch); foreach (var item in pagedResult.Results) response.GetModule(moduleName).AddResult(item); response.GetModule(moduleName).TotalCount = pagedResult.FoundCount; return response; } if (uinteger != null) { var response = new PortalResult(request.Stopwatch); response.GetModule(moduleName).AddResult(new ScalarResult((int) uinteger.Value)); return response; } if (integer != null) { var response = new PortalResult(request.Stopwatch); response.GetModule(moduleName).AddResult(new ScalarResult(integer.Value)); return response; } if (attachment != null) { portalResponse.ReturnFormat = ReturnFormat.ATTACHMENT; return attachment; } else { if (exception == null) exception = new UnsupportedExtensionReturnTypeException("Return type is not supported: " + obj.GetType().FullName); if (groupedResult != null) exception = new UnsupportedExtensionReturnTypeException("This Action is not available with the current Format"); var response = new PortalResult(request.Stopwatch); response.GetModule(moduleName).AddResult(new ExtensionError(exception, request.Stopwatch)); return response; } }
public object Create(object obj, IPortalRequest request) { if (obj == null) throw new NullReferenceException("Returned object is null"); var result = obj as IResult; result = result == null ? obj as AResult : result; var results = obj as IEnumerable<IResult>; var pagedResult = obj as IPagedResult<IResult>; var queryResult = obj as QueryResult; var groupedResult = obj as IGroupedResult<IResult>; var uinteger = obj as uint?; var integer = obj as int?; var attachment = obj as Attachment; var exception = obj as Exception; if (result != null) { var portalResult = new PagedResult(1, 0, new[] {result}); var response = new PortalResponse(new PortalHeader(request.Stopwatch), portalResult, new PortalError()); return response; } if (results != null) { var lst = results.ToList(); var portalResult = new PagedResult((uint) lst.Count, 0, lst); var response = new PortalResponse(new PortalHeader(request.Stopwatch), portalResult, new PortalError()); return response; } if (pagedResult != null) { var portalResult = new PagedResult(pagedResult.FoundCount, pagedResult.StartIndex, pagedResult.Results); var response = new PortalResponse(new PortalHeader(request.Stopwatch), portalResult, new PortalError()); return response; } if (queryResult != null) { var response = new PortalResponse(new PortalHeader(request.Stopwatch), queryResult, new PortalError()); return response; } if (groupedResult != null) { var portalResult = new QueryResult {Groups = groupedResult.Groups.ToList()}; var response = new PortalResponse(new PortalHeader(request.Stopwatch), portalResult, new PortalError()); return response; } if (uinteger != null) { var portalResult = new PagedResult(1, 0, new[] {new ScalarResult((int) uinteger.Value)}); var response = new PortalResponse(new PortalHeader(request.Stopwatch), portalResult, new PortalError()); return response; } if (integer != null) { var portalResult = new PagedResult(1, 0, new[] {new ScalarResult(integer.Value)}); var response = new PortalResponse(new PortalHeader(request.Stopwatch), portalResult, new PortalError()); return response; } if (attachment != null) return attachment; else { if (exception == null) exception = new UnsupportedExtensionReturnTypeException("Return type is not supported: " + obj.GetType().FullName); var response = new PortalResponse(new PortalHeader(request.Stopwatch), new PortalResult(), new PortalError()); response.Error.SetException(exception); return response; } }