示例#1
0
            public IRouteTreeBranch AddBranch(string endpoint, RestMethod logic)
            {
                IRouteTreeBranch branch = new Branch(this)
                {
                    Logic = logic
                };

                if (endpoint.Equals("*"))
                {
                    _wildcardBranch = branch;
                }
                else if (endpoint.Equals("**"))
                {
                    _greedyBranch = new GreedyBranch(this)
                    {
                        Logic = logic
                    };
                    branch = _greedyBranch;
                }
                else if (endpoint.StartsWith("{"))
                {
                    endpoint = String.Format("^{0}$", endpoint.Trim('{', '}'));
                    _regexBranches[new Regex(endpoint)] = branch;
                }
                else
                {
                    _literalBranches[endpoint] = branch;
                }

                return(branch);
            }
示例#2
0
            public IRouteTreeBranch GetChild(string endpointName, bool create)
            {
                IRouteTreeBranch retVal = null;

                if (_literalBranches.TryGetValue(endpointName, out retVal))
                {
                    return(retVal);
                }

                foreach (var pair in _regexBranches)
                {
                    if (pair.Key.IsMatch(endpointName))
                    {
                        return(pair.Value);
                    }
                }

                if ((_wildcardBranch != null && endpointName.Equals("*")))
                {
                    return(_wildcardBranch);
                }

                //NOTE.JHB: Fragile and will break if any other branch fails to return
                //but so far it is good enough
                if (_greedyBranch != null && endpointName.Equals("**"))
                {
                    return(_greedyBranch);
                }

                if (!create)
                {
                    return(_wildcardBranch ?? _greedyBranch);
                }

                return(AddBranch(endpointName, null));
            }
 public GreedyBranch(IRouteTreeBranch parent)
 {
     Parent = parent;
 }
 /// <summary>
 /// Constructor
 /// </summary>
 public RouteTree()
 {
     Trunk = new Branch(null);
 }
            public IRouteTreeBranch AddBranch(string endpoint, RestMethod logic)
            {
                IRouteTreeBranch branch = new Branch(this) { Logic = logic };
                if (endpoint.Equals("*")) {
                    _wildcardBranch = branch;
                } else if (endpoint.Equals("**")) {
                    _greedyBranch = new GreedyBranch(this) { Logic = logic };
                    branch = _greedyBranch;
                } else if (endpoint.StartsWith("{")) {
                    endpoint = String.Format("^{0}$", endpoint.Trim('{', '}'));
                    _regexBranches[new Regex(endpoint)] = branch;
                } else {
                    _literalBranches[endpoint] = branch;
                }

                return branch;
            }
示例#6
0
 /// <summary>
 /// Constructor
 /// </summary>
 public RouteTree()
 {
     Trunk = new Branch(null);
 }
示例#7
0
 public GreedyBranch(IRouteTreeBranch parent)
 {
     Parent = parent;
 }