Example #1
0
        public RouteTranslationBuilder WhereTranslated()
        {
            if (CurrentRouteSelectorFunc != null)
            {
                Logger.LogWarning($"{nameof(CurrentRouteSelectorFunc)} is not null, will be overridden.");
            }

            CurrentRouteSelectorFunc = (Func <TranslatedRoutesRouteSelector>)(() =>
                                                                              new TranslatedRoutesRouteSelector()
            {
                Cultures  = CurrentCultures.ToArray(),
                Localizer = RouteTranslationConfiguration.Localizer,
            });

            return(this);
        }
Example #2
0
        public RouteTranslationBuilder RemoveOriginalRoutes()
        {
            IRouteProcessor routeProcessor = new DisableOriginalRouteProcessor(RouteTranslationConfiguration,
                                                                               LoggerFactory.CreateLogger <DisableOriginalRouteProcessor>())
            {
                Cultures = CurrentCultures.ToArray(),
            };

            RouteTranslationStore.Add(new RouteSelectorProcessorPair
            {
                Selector  = CurrentRouteSelectorFunc(),
                Processor = routeProcessor,
            });

            return(this);
        }
Example #3
0
        public RouteTranslationBuilder Filter <T>(Expression <Action <T> > expression)
        {
            string actionName = null;

            Type[] actionArguments = null;

            if (expression != null)
            {
                MethodCallExpression methodCall = expression.Body as MethodCallExpression;

                if (methodCall == null)
                {
                    throw new ArgumentException("Expression must be a MethodCallExpression", nameof(expression));
                }

                actionName      = methodCall.Method.Name;
                actionArguments = methodCall.Arguments.Select(x => x.Type).ToArray();
            }

            if (CurrentRouteSelectorFunc == null)
            {
                throw new InvalidOperationException(
                          $"{typeof(FilterRouteSelector)} cannot be used before any RouteSelector is defined.");
            }

            Func <IRouteSelector> previousRouteSelectorFunc = CurrentRouteSelectorFunc;

            CurrentRouteSelectorFunc = (Func <FilterRouteSelector>)(() =>
            {
                FilterRouteSelector filterRouteSelector = new FilterRouteSelector(previousRouteSelectorFunc())
                {
                    Controller          = Regex.Replace(typeof(T).Name, "Controller$", string.Empty),
                    ControllerNamespace = typeof(T).Namespace,
                    Action          = actionName,
                    ActionArguments = actionArguments,
                    Localizer       = RouteTranslationConfiguration.Localizer,
                    Cultures        = CurrentCultures.ToArray(),
                };

                if ((previousRouteSelectorFunc as Func <FilterRouteSelector>) != null)
                {
                    FilterRouteSelector previousFilterRouteSelector = ((Func <FilterRouteSelector>)previousRouteSelectorFunc)();

                    filterRouteSelector.FilterControllerOrActionWhenNoTranslatedRouteLeft = previousFilterRouteSelector
                                                                                            .FilterControllerOrActionWhenNoTranslatedRouteLeft;
                    filterRouteSelector.FilterControllerOrActionWhenNoUntranslatedRouteLeft = previousFilterRouteSelector
                                                                                              .FilterControllerOrActionWhenNoUntranslatedRouteLeft;
                }

                if ((previousRouteSelectorFunc as Func <TranslatedRoutesRouteSelector>) != null)
                {
                    filterRouteSelector.FilterControllerOrActionWhenNoTranslatedRouteLeft = true;
                }

                if ((previousRouteSelectorFunc as Func <UntranslatedRoutesRouteSelector>) != null)
                {
                    filterRouteSelector.FilterControllerOrActionWhenNoUntranslatedRouteLeft = true;
                }

                return(filterRouteSelector);
            });

            return(this);
        }