示例#1
0
        private void AddRoute <TRequest>(
            HttpMethods method,
            string template      = null,
            Type[] pipeline      = null,
            string dataObjectKey = null,
            Dictionary <string, object> requestParams = null,
            WrapResponseDelegate wrapDelegate         = null)
        {
            var branchBuilder = this.app.New();

            pipeline
            ?.ForEach(p => branchBuilder.UseMiddleware(p));
            branchBuilder.UseMiddleware <HttpApiMiddleware>();
            var branch = branchBuilder.Build();

            var resultUri = this.baseUri;

            if (!string.IsNullOrWhiteSpace(template))
            {
                resultUri = $"{resultUri}/{template}";
            }

            this.routeTable
            .AddRoute <TRequest>(method,
                                 $"/api/{resultUri}",
                                 branch,
                                 dataObjectKey,
                                 requestParams,
                                 wrapDelegate);
        }
示例#2
0
 public ILiaisonRoute Route(
     string uri,
     string dataObjectKey = null,
     Type[] pipeline      = null,
     Dictionary <string, object> requestParams = null,
     WrapResponseDelegate wrapDelegate         = null)
 {
     return(new LiaisonRoute(this.routeTable, uri, this.app));
 }
示例#3
0
 public ILiaisonRoute Delete <TRequest>(
     string template      = "{id}",
     Type[] pipeline      = null,
     string dataObjectKey = null,
     Dictionary <string, object> requestParams = null,
     WrapResponseDelegate wrapDelegate         = null)
 {
     this.AddRoute <TRequest>(HttpMethods.DELETE,
                              template,
                              pipeline,
                              dataObjectKey,
                              requestParams,
                              wrapDelegate);
     return(this);
 }
示例#4
0
        public RouteItem AddRoute <TRequest>(
            HttpMethods method,
            string route,
            RequestDelegate pipeline,
            string dataObjectKey,
            Dictionary <string, object> requestParams = null,
            WrapResponseDelegate wrapDelegate         = null)
        {
            var uriParser = new UriParser(route);

            var routeItem = new RouteItem
            {
                Route                = route,
                Method               = method,
                RequestParameters    = requestParams,
                RequestType          = typeof(TRequest),
                DataObjectKey        = dataObjectKey,
                Pipeline             = pipeline,
                WrapResponseDelegate = wrapDelegate,
                HasRouteParameters   = uriParser.HasRouteParameters,
            };

            if (this.routeDictionary
                .AddRoute(routeItem, uriParser))
            {
                return(routeItem);
            }

            var exception = new Exception("Registering Duplicate Routes");

            this.logger
            .LogError(exception,
                      "Trying to add duplicate route keys added, {Route}",
                      route);
            throw exception;
        }