Example #1
0
        /// <summary>
        /// Parse the Url to determine class, method and extension
        /// </summary>
        protected internal virtual ExecutionTargetInfo ResolveExecutionTargetInfo()
        {
            // TODO: to help debloat efforts stated in GetArguments(), these operations should be extracted into an IExecutionRequestTargetResolver interface.

            // parse the request url to set the className, methodName and ext
            ExecutionTargetInfo executionTargetInfo = ResolveExecutionTarget(RequestUrl.AbsolutePath, ServiceProvider, ProxyAliases);

            _className  = executionTargetInfo.ClassName;
            _methodName = executionTargetInfo.MethodName;
            _ext        = executionTargetInfo.Ext;
            return(executionTargetInfo);
        }
Example #2
0
        private static ExecutionTargetInfo ResolveExecutionTarget(string path, Incubator serviceProvider, ProxyAlias[] proxyAliases)
        {
            if (path.ToLowerInvariant().StartsWith("/get"))
            {
                path = path.TruncateFront(4);
            }
            else if (path.ToLowerInvariant().StartsWith("/post"))
            {
                path = path.TruncateFront(5);
            }

            return(ExecutionTargetInfo.ResolveExecutionTarget(path, serviceProvider, proxyAliases));
        }
Example #3
0
        public static ExecutionTargetInfo ResolveExecutionTarget(string path, Incubator serviceProvider, ProxyAlias[] proxyAliases)
        {
            ExecutionTargetInfo result = new ExecutionTargetInfo();

            Queue <string> split = new Queue <string>(path.DelimitSplit("/", "."));

            while (split.Count > 0)
            {
                string currentChunk = split.Dequeue();
                string upperred     = currentChunk.ToUpperInvariant();

                if (string.IsNullOrEmpty(result.ClassName))
                {
                    if (!serviceProvider.HasClass(currentChunk) && proxyAliases != null)
                    {
                        ProxyAlias alias = proxyAliases.Where(pa => pa.Alias.Equals(currentChunk)).FirstOrDefault();
                        if (alias != null)
                        {
                            result.ClassName = alias.ClassName;
                        }
                        else
                        {
                            result.ClassName = currentChunk;
                        }
                    }
                    else
                    {
                        result.ClassName = currentChunk;
                    }
                }
                else if (string.IsNullOrEmpty(result.MethodName))
                {
                    result.MethodName = currentChunk;
                }
                else if (string.IsNullOrEmpty(result.Ext))
                {
                    result.Ext = currentChunk;
                }
            }

            return(result);
        }
Example #4
0
 public virtual ExecutionTargetInfo ResolveExecutionTarget(IHttpContext context)
 {
     return(ExecutionTargetInfo.ResolveExecutionTarget(context.Request.Url.AbsolutePath, ServiceProvider, ProxyAliases));
 }