상속: IServiceRouteMapper
        public override void RegisterArea(AreaRegistrationContext context)
        {
            RouteMapper.ConfigureArea(context, AreaName);

            //context.MapRoute(
            //    name: $"{AreaName}_index_with_parent",
            //    url: "Admins/{controller}/{parentId}/{action}",
            //    defaults: new { action = ActionNames.IndexWithParent },
            //    namespaces: new[] { $"TenderSearch.Web.Areas.{AreaName}.Controllers" }
            //);

            //context.MapRoute(
            //    name: $"{AreaName}_suggestion_with_parent",
            //    url: "Admins/{controller}/{parentId}/SuggestionsWithParent",
            //    defaults: new { action = ActionNames.SuggestionsWithParent },
            //    namespaces: new[] { $"TenderSearch.Web.Areas.{AreaName}.Controllers" }
            //);

            //context.MapRoute(
            //    name: $"{AreaName}_create_with_parent",
            //    url: "Admins/{controller}/{parentId}/CreateWithParent",
            //    defaults: new { action = ActionNames.CreateWithParent },
            //    namespaces: new[] { $"TenderSearch.Web.Areas.{AreaName}.Controllers" }
            //);

            //context.MapRoute(
            //    name: $"{AreaName}_default",
            //    url: "Admins/{controller}/{action}/{id}",
            //    defaults: new { action = ActionNames.Index, id = UrlParameter.Optional },
            //    namespaces: new[] { $"TenderSearch.Web.Areas.{AreaName}.Controllers" }
            //);
        }
예제 #2
0
        public void GetAdapterShouldReturnNullForUnknownMethods()
        {
            var mapper = new RouteMapper(new RouteMetadata[0]);

            RouteMethod result = mapper.GetAdapter(ExampleMethodInfo);

            Assert.That(result, Is.Null);
        }
예제 #3
0
        public void GetAdapterShouldReturnAnAdapterForKnownMethods()
        {
            var mapper = new RouteMapper(new[] { CreateRoute("GET", "/route") });

            RouteMethod result = mapper.GetAdapter(ExampleMethodInfo);

            Assert.That(result, Is.Not.Null);
        }
예제 #4
0
        //public delegate object RunHandlerDelegate()

        public CustomRouting(RequestDelegate next, ContractRouteInitializer routingMapper, HandlerFactory handlerFactory, JsonContractInitializer contractInitializer)
        {
            _next = next;

            this.routingMapper       = routingMapper.Mapper;
            this.handlerFactory      = handlerFactory;
            this.contractInitializer = contractInitializer;
        }
        public void Mapping_Total_Cost_To_Destination_Object()
        {
            var routeProfile = new RouteMapper();

            Mapper.AddProfile(routeProfile);

            var dest = Mapper.Map <RouteTotals, Route>(_routeTotals);

            Assert.AreEqual(dest.TotalCost, _routeTotals.totalCost);
        }
예제 #6
0
        public void MatchShouldSetTheParameters()
        {
            IReadOnlyDictionary <string, object> parameters = null;
            ILookup <string, string>             query      = Substitute.For <ILookup <string, string> >();
            var mapper = new RouteMapper(new[] { CreateRoute("GET", "/route") });

            mapper.Match("GET", "/route", query, out parameters);

            Assert.That(parameters, Is.Not.Null);
        }
예제 #7
0
        public void MatchShouldMatchTheVerb()
        {
            IReadOnlyDictionary <string, object> parameters = null;
            ILookup <string, string>             query      = Substitute.For <ILookup <string, string> >();
            var mapper = new RouteMapper(new[] { CreateRoute("PUT", "/route") });

            MethodInfo get = mapper.Match("GET", "/route", query, out parameters);
            MethodInfo put = mapper.Match("PUT", "/route", query, out parameters);

            Assert.That(get, Is.Null);
            Assert.That(put, Is.Not.Null);
        }
        private RouteMapper FindRoutingTable(String dataSource, String actualTable)
        {
            foreach (var routeResult in routeResults)
            {
                RouteMapper result = routeResult.FindTableMapper(dataSource, actualTable);
                if (null != result)
                {
                    return(result);
                }
            }

            throw new InvalidOperationException($"Cannot found routing table factor, data source: {dataSource}, actual table: {actualTable}");
        }
예제 #9
0
        public IHttpActionResult FindRoutes(string apiKey, string startLocationName, string endLocationName, bool recommended, string goods, double weight)
        {
            if (!_securityService.IsAuthenticated(apiKey, true))
            {
                return(Unauthorized());
            }

            var lowerStart = startLocationName.ToLower();
            var lowerEnd   = endLocationName.ToLower();

            var startLocation = _locationService.FindLocation(lowerStart);

            if (startLocation == null)
            {
                return(NotFound());
            }

            var endLocation = _locationService.FindLocation(lowerEnd);

            if (endLocation == null)
            {
                return(NotFound());
            }

            if (weight > 40)
            {
                return(BadRequest("Weights over 40 kg are not supported"));
            }

            var canParse = Enum.TryParse <PackageType>(goods, true, out var packageType);

            if (!canParse)
            {
                return(BadRequest("Unknown type of goods"));
            }
            if (!_allowedPackageTypes.Contains(packageType))
            {
                return(BadRequest("That type of goods is not allowed"));
            }

            var cheapestRoute = _routeService.FindCheapest(startLocation, endLocation, true);
            var fastestRoute  = _routeService.FindFastest(startLocation, endLocation, true);

            var viewRoutes = new[]
            {
                RouteMapper.ViewExternalRouteFromRoute(cheapestRoute, startLocationName, endLocationName, packageType, recommended),
                RouteMapper.ViewExternalRouteFromRoute(fastestRoute, startLocationName, endLocationName, packageType, recommended)
            };

            return(Ok(viewRoutes));
        }
예제 #10
0
        public static void AddSkillion(this IServiceCollection services)
        {
            var assembly = Assembly.GetCallingAssembly();

            services.AddControllers().AddNewtonsoftJson();

            var config  = services.BuildServiceProvider().GetService <IConfiguration>();
            var section = config.GetSection("Skillion:Configuration");

            services.Configure <SkillionConfiguration>(section);

            services.AddScoped <ISkillRequestParser, SkillRequestParser>();
            services.AddScoped <SkillionRouteValueTransformer>();
            services.AddScoped <ISkillRequestValidator, SkillRequestValidator>();
            services.AddSingleton <IRouteDataService>(new RouteDataService(RouteMapper.MapRoutes(GetMethods(assembly))));
        }
예제 #11
0
        public void GivenControllerAction_WhenDoesNotHaveAttribute_ReturnEmptyRoutes()
        {
            const string intentName     = "TestIntent";
            const string controllerName = "Test";
            const string methodName     = "TestAction";

            var controllerNamespace = $"RouteMapperTests.Controllers.{controllerName}Controller";

            var type = new Mock <Type>();

            type.Setup(t => t.FullName).Returns(controllerNamespace);
            var testMemberInfo = new TestMemberInfo(type.Object, methodName, null);

            var routes = RouteMapper.MapRoutes(new List <MemberInfo> {
                testMemberInfo
            });

            Assert.Empty(routes);
        }
예제 #12
0
        public void GivenControllerAction_WhenHasAttribute_ReturnRoutes()
        {
            const string intentName     = "TestIntent";
            const string controllerName = "Test";
            const string methodName     = "TestAction";

            var controllerNamespace = $"RouteMapperTests.Controllers.{controllerName}Controller";

            var type = new Mock <Type>();

            type.Setup(t => t.FullName).Returns(controllerNamespace);
            var testMemberInfo = new TestMemberInfo(type.Object, methodName, new SkillionRequestAttribute[] { new IntentRequestAttribute(intentName) });

            var routes = RouteMapper.MapRoutes(new List <MemberInfo> {
                testMemberInfo
            });

            Assert.True(routes.ContainsKey(intentName));
            Assert.Equal(controllerName, routes[intentName].Controller);
        }
예제 #13
0
        /// <summary>
        /// Create browser driver
        /// </summary>
        public TestContextFixture()
        {
            //Create Browser driver.
            var driverManager = CraftsmanFactory.CreateDriverManager();

            if (this.DriverManager != null)
            {
                var options = this.DriverManager.Driver.Manage();
                options.Cookies.AddCookie(new OpenQA.Selenium.Cookie("wm-ASRep-14-39814", "1"));
                options.Cookies.AddCookie(new OpenQA.Selenium.Cookie("wm-ASRep-14-45441", "1"));
                options.Window.Maximize();
            }

            //build router.
            var routeMapper = new RouteMapper(driverManager.Driver);

            //set data.
            this.DriverManager = driverManager;
            this.RouteMapper   = routeMapper;
        }
        public RouteResult Route(ShardingRule shardingRule)
        {
            RouteResult result           = new RouteResult();
            string      dataSourceName   = shardingRule.ShardingDataSourceNames.GetRandomDataSourceName();
            RouteMapper dataSourceMapper = new RouteMapper(dataSourceName, dataSourceName);

            if (shardingRule.IsAllBroadcastTables(logicTables))
            {
                List <RouteMapper> tableMappers = new List <RouteMapper>(logicTables.Count);
                foreach (var logicTable in logicTables)
                {
                    tableMappers.Add(new RouteMapper(logicTable, logicTable));
                }
                result.GetRouteUnits().Add(new RouteUnit(dataSourceMapper, tableMappers));
            }
            else if (logicTables.IsEmpty())
            {
                result.GetRouteUnits().Add(new RouteUnit(dataSourceMapper, new List <RouteMapper>(0)));
            }
            else if (1 == logicTables.Count)
            {
                string logicTableName = logicTables.First();
                if (shardingRule.FindTableRule(logicTableName) == null)
                {
                    result.GetRouteUnits().Add(new RouteUnit(dataSourceMapper, new List <RouteMapper>(0)));
                    return(result);
                }
                DataNode dataNode = shardingRule.GetDataNode(logicTableName);
                result.GetRouteUnits().Add(new RouteUnit(dataSourceMapper, new List <RouteMapper>()
                {
                    new RouteMapper(logicTableName, dataNode.GetTableName())
                }));
            }
            else
            {
                List <RouteMapper> tableMappers             = new List <RouteMapper>(logicTables.Count);
                ISet <string>      availableDatasourceNames = null;
                bool first = true;
                foreach (var logicTable in logicTables)
                {
                    TableRule tableRule = shardingRule.GetTableRule(logicTable);
                    DataNode  dataNode  = tableRule.ActualDataNodes[0];
                    tableMappers.Add(new RouteMapper(logicTable, dataNode.GetTableName()));
                    ISet <string> currentDataSourceNames = new HashSet <string>();
                    foreach (var actualDataNode in tableRule.ActualDataNodes)
                    {
                        currentDataSourceNames.Add(actualDataNode.GetDataSourceName());
                    }
                    if (first)
                    {
                        availableDatasourceNames = currentDataSourceNames;
                        first = false;
                    }
                    else
                    {
                        availableDatasourceNames = availableDatasourceNames.Intersect(currentDataSourceNames).ToHashSet();
                    }
                }
                if (availableDatasourceNames.IsEmpty())
                {
                    throw new ShardingException($"Cannot find actual dataSource intersection for logic tables: {logicTables}");
                }
                dataSourceName = shardingRule.ShardingDataSourceNames.GetRandomDataSourceName(availableDatasourceNames);
                result.GetRouteUnits().Add(new RouteUnit(new RouteMapper(dataSourceName, dataSourceName), tableMappers));
            }
            return(result);
        }
 public override void RegisterArea(AreaRegistrationContext context)
 {
     RouteMapper.ConfigureArea(context, AreaName);
 }
예제 #16
0
        private static void RegisterRoutes(RouteCollection routes)
        {
            var routeMapper = new RouteMapper(routes);

            routeMapper.RegisterRoutes();
        }
 public RouteCrud()
 {
     Mapper = new RouteMapper();
     Dao    = SqlDao.GetInstance();
 }
예제 #18
0
 public RouteService(IUnitOfWork unitOfWork)
 {
     _uof         = unitOfWork;
     _routeMapper = new RouteMapper();
 }