/// <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); }
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)); }
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); }
public virtual ExecutionTargetInfo ResolveExecutionTarget(IHttpContext context) { return(ExecutionTargetInfo.ResolveExecutionTarget(context.Request.Url.AbsolutePath, ServiceProvider, ProxyAliases)); }