public CustomerController(
     ICreateCustomerHandler createCustomerHandler,
     ICurrentRequest currentRequest)
 {
     _createCustomerHandler = createCustomerHandler;
     _currentRequest        = currentRequest;
 }
Example #2
0
        public void BuildTopLevelLinks_GlobalAndResourceConfiguration_ExpectedLinks(Link global,
                                                                                    Link resource,
                                                                                    string expectedSelfLink,
                                                                                    bool pages)
        {
            // Arrange
            var config          = GetConfiguration(topLevelLinks: global);
            var primaryResource = GetArticleResourceContext(topLevelLinks: resource);

            _provider.Setup(m => m.GetResourceContext <Article>()).Returns(primaryResource);

            bool            useBaseId        = expectedSelfLink != _topSelf;
            string          relationshipName = expectedSelfLink == _topRelatedSelf ? _relationshipName : null;
            ICurrentRequest currentRequest   = GetRequestManager(primaryResource, useBaseId, relationshipName);

            var builder = new LinkBuilder(config, currentRequest, _pageService, _provider.Object, _queryStringAccessor);

            // Act
            var links = builder.GetTopLevelLinks();

            // Assert
            if (!pages && expectedSelfLink == null)
            {
                Assert.Null(links);
            }
            else
            {
                Assert.True(CheckLinks(links, pages, expectedSelfLink));
            }
        }
Example #3
0
        public async Task <FindPathResult> GetUrlAsync(ICurrentRequest currentRequest, string action, string controller,
                                                       object additionalValues)
        {
            if (currentRequest == null)
            {
                throw new ArgumentException("currentRequest is null");
            }


            var input = new FindPathInput();

            input.DomainDatas = currentRequest.DomainDatas;
            input.DomainId    = currentRequest.DomainId.ToString(CultureInfo.InvariantCulture);
            input.IsSecure    = currentRequest.IsSecure;
            input.Port        = currentRequest.Port;
            input.Datas       = new Dictionary <string, string>();
            input.Datas.Add("action", action);
            input.Datas.Add("controller", controller);

            var values = UrlHelper.GetValues(additionalValues);

            if (values != null)
            {
                foreach (var value in values)
                {
                    input.Datas.Add(value.Key, value.Value);
                }
            }

            return(await _routeManager.FindDomainPathAsync(input));
        }
        public async Task Invoke(HttpContext httpContext,
                                 IControllerResourceMapping controllerResourceMapping,
                                 IJsonApiOptions options,
                                 ICurrentRequest currentRequest,
                                 IResourceGraph resourceGraph)
        {
            var routeValues = httpContext.GetRouteData().Values;

            var resourceContext = CreateResourceContext(routeValues, controllerResourceMapping, resourceGraph);

            if (resourceContext != null)
            {
                if (!await ValidateContentTypeHeaderAsync(httpContext, options.SerializerSettings) ||
                    !await ValidateAcceptHeaderAsync(httpContext, options.SerializerSettings))
                {
                    return;
                }

                SetupCurrentRequest(currentRequest, resourceContext, routeValues, options, httpContext.Request);

                httpContext.SetJsonApiRequest();
            }

            await _next(httpContext);
        }
        public async Task Invoke(HttpContext httpContext,
                                 IControllerResourceMapping controllerResourceMapping,
                                 IJsonApiOptions options,
                                 ICurrentRequest currentRequest,
                                 IResourceGraph resourceGraph)
        {
            _httpContext               = httpContext;
            _currentRequest            = currentRequest;
            _controllerResourceMapping = controllerResourceMapping;
            _resourceGraph             = resourceGraph;
            _options     = options;
            _routeValues = httpContext.GetRouteData().Values;
            var requestResource = GetCurrentEntity();

            if (requestResource != null)
            {
                _currentRequest.SetRequestResource(requestResource);
                _currentRequest.IsRelationshipPath = PathIsRelationship();
                _currentRequest.BasePath           = GetBasePath(requestResource.ResourceName);
                _currentRequest.BaseId             = GetBaseId();
                _currentRequest.RelationshipId     = GetRelationshipId();
            }

            if (IsValid())
            {
                await _next(httpContext);
            }
        }
Example #6
0
 public SortService(IResourceDefinitionProvider resourceDefinitionProvider,
                    IResourceGraph resourceGraph,
                    ICurrentRequest currentRequest)
     : base(resourceGraph, currentRequest)
 {
     _resourceDefinitionProvider = resourceDefinitionProvider;
     _queries = new List <SortQueryContext>();
 }
Example #7
0
 public FilterQueryStringParameterReader(ICurrentRequest currentRequest,
                                         IResourceContextProvider resourceContextProvider, IResourceFactory resourceFactory, IJsonApiOptions options)
     : base(currentRequest, resourceContextProvider)
 {
     _options      = options ?? throw new ArgumentNullException(nameof(options));
     _scopeParser  = new QueryStringParameterScopeParser(resourceContextProvider, FieldChainRequirements.EndsInToMany);
     _filterParser = new FilterParser(resourceContextProvider, resourceFactory, ValidateSingleField);
 }
 public JsonApiReader(IJsonApiDeserializer deserializer,
                      ICurrentRequest currentRequest,
                      ILoggerFactory loggerFactory)
 {
     _deserializer   = deserializer;
     _currentRequest = currentRequest;
     _logger         = loggerFactory.CreateLogger <JsonApiReader>();
 }
 protected QueryParameterService(IResourceGraph resourceGraph, ICurrentRequest currentRequest)
 {
     _mainRequestResource = currentRequest.GetRequestResource();
     _resourceGraph       = resourceGraph;
     _requestResource     = currentRequest.RequestRelationship != null
         ? resourceGraph.GetResourceContext(currentRequest.RequestRelationship.RightType)
         : _mainRequestResource;
 }
        public async Task Invoke(HttpContext context, ICurrentRequest currentRequest)
        {
            if (IsSwagger(context))
            {
                await this._next(context);
            }
            else
            {
                _currentRequest = currentRequest;
                InterceptRequest(context);
                var originalBodyStream = context.Response.Body;

                using var responseBody = new MemoryStream();
                context.Response.Body  = responseBody;

                try
                {
                    await _next.Invoke(context);

                    switch (context.Response.StatusCode)
                    {
                    case (int)CustomHttpStatusCode.OK:
                    {
                        var body = await FormatResponse(context.Response);
                        await HandleSuccessRequestAsync(context, body, context.Response.StatusCode);

                        break;
                    }

                    case (int)CustomHttpStatusCode.FluentValidation:
                    {
                        var body = await FormatResponse(context.Response);
                        await HandleBadRequestValidationAsync(context, body);

                        break;
                    }

                    default:
                    {
                        await HandleNotSuccessRequestAsync(context, context.Response.StatusCode);

                        break;
                    }
                    }
                }
                catch (Exception ex)
                {
                    await HandleExceptionAsync(context, ex);
                }
                finally
                {
                    responseBody.Seek(0, SeekOrigin.Begin);
                    await responseBody.CopyToAsync(originalBodyStream);
                }
            }
        }
 public LinkBuilder(ILinksConfiguration options,
                    ICurrentRequest currentRequest,
                    IPageService pageService,
                    IResourceContextProvider provider)
 {
     _options        = options;
     _currentRequest = currentRequest;
     _pageService    = pageService;
     _provider       = provider;
 }
        protected QueryStringParameterReader(ICurrentRequest currentRequest, IResourceContextProvider resourceContextProvider)
        {
            if (currentRequest == null)
            {
                throw new ArgumentNullException(nameof(currentRequest));
            }

            _resourceContextProvider = resourceContextProvider ?? throw new ArgumentNullException(nameof(resourceContextProvider));
            _isCollectionRequest     = currentRequest.IsCollection;
            RequestResource          = currentRequest.SecondaryResource ?? currentRequest.PrimaryResource;
        }
Example #13
0
 public LinkBuilder(IJsonApiOptions options,
                    ICurrentRequest currentRequest,
                    IPaginationContext paginationContext,
                    IResourceContextProvider provider,
                    IRequestQueryStringAccessor queryStringAccessor)
 {
     _options             = options;
     _currentRequest      = currentRequest;
     _paginationContext   = paginationContext;
     _provider            = provider;
     _queryStringAccessor = queryStringAccessor;
 }
Example #14
0
        public async Task <ExpandoObject> GetSiteMapAsync(ICurrentRequest currentRequest)
        {
            var master            = new ExpandoObject();
            var masterDictionnary = (IDictionary <string, object>)master;
            var itemRepository    = _dataFactory.ItemRepository;
            var items             =
                await
                itemRepository.GetItemsAsync(currentRequest.SiteId,
                                             new ItemFilters { ParentId = currentRequest.SiteId });

            await GetChildsAsync(_businessFactory, currentRequest, items, masterDictionnary, _dataFactory, true);

            return(master);
        }
 public CustomArticleService(
     IResourceRepository <Article> repository,
     IQueryLayerComposer queryLayerComposer,
     IPaginationContext paginationContext,
     IJsonApiOptions options,
     ILoggerFactory loggerFactory,
     ICurrentRequest currentRequest,
     IResourceChangeTracker <Article> resourceChangeTracker,
     IResourceFactory resourceFactory,
     IResourceHookExecutor hookExecutor = null)
     : base(repository, queryLayerComposer, paginationContext, options, loggerFactory, currentRequest,
            resourceChangeTracker, resourceFactory, hookExecutor)
 {
 }
        private static void SetupCurrentRequest(ICurrentRequest currentRequest, ResourceContext resourceContext,
                                                RouteValueDictionary routeValues, IJsonApiOptions options, HttpRequest httpRequest)
        {
            currentRequest.SetRequestResource(resourceContext);
            currentRequest.BaseId             = GetBaseId(routeValues);
            currentRequest.BasePath           = GetBasePath(resourceContext.ResourceName, options, httpRequest);
            currentRequest.IsRelationshipPath = GetIsRelationshipPath(routeValues);
            currentRequest.RelationshipId     = GetRelationshipId(currentRequest.IsRelationshipPath, httpRequest.Path.Value, options.Namespace);

            if (routeValues.TryGetValue("relationshipName", out object relationshipName))
            {
                currentRequest.RequestRelationship =
                    resourceContext.Relationships.SingleOrDefault(relationship =>
                                                                  relationship.PublicRelationshipName == (string)relationshipName);
            }
        }
Example #17
0
        public void BuildTopLevelLinks_GlobalAndResourceConfiguration_ExpectedLinks(
            Links global, Links resource, string expectedSelfLink, bool pages)
        {
            // Arrange
            var config          = GetConfiguration(topLevelLinks: global);
            var primaryResource = GetArticleResourceContext(topLevelLinks: resource);

            _provider.Setup(m => m.GetResourceContext <Article>()).Returns(primaryResource);

            bool            usePrimaryId     = expectedSelfLink != _topSelf;
            string          relationshipName = expectedSelfLink == _topRelatedSelf ? _relationshipName : null;
            ICurrentRequest currentRequest   = GetRequestManager(primaryResource, usePrimaryId, relationshipName);

            var builder = new LinkBuilder(config, currentRequest, _paginationContext, _provider.Object, _queryStringAccessor);

            // Act
            var links = builder.GetTopLevelLinks();

            // Assert
            if (!pages && expectedSelfLink == null)
            {
                Assert.Null(links);
            }
            else
            {
                if (pages)
                {
                    Assert.Equal($"{_host}/articles?foo=bar&page[size]=10&page[number]=2", links.Self);
                    Assert.Equal($"{_host}/articles?foo=bar&page[size]=10&page[number]=1", links.First);
                    Assert.Equal($"{_host}/articles?foo=bar&page[size]=10&page[number]=1", links.Prev);
                    Assert.Equal($"{_host}/articles?foo=bar&page[size]=10&page[number]=3", links.Next);
                    Assert.Equal($"{_host}/articles?foo=bar&page[size]=10&page[number]=3", links.Last);
                }
                else
                {
                    Assert.Equal(links.Self, expectedSelfLink);
                    Assert.Null(links.First);
                    Assert.Null(links.Prev);
                    Assert.Null(links.Next);
                    Assert.Null(links.Last);
                }
            }
        }
Example #18
0
        public async Task <ExpandoObject> GetMasterAsync(ICurrentRequest currentRequest)
        {
            var master            = new ExpandoObject();
            var masterDictionnary = (IDictionary <string, object>)master;
            var itemRepository    = _dataFactory.ItemRepository;
            var items             =
                await
                itemRepository.GetItemsAsync(currentRequest.SiteId,
                                             new ItemFilters { ParentId = currentRequest.SiteId });

            masterDictionnary.Add("Site", currentRequest);
            await GetChildsAsync(_businessFactory, currentRequest, items, masterDictionnary, _dataFactory);

            // On récupère le le domain sur lequel on doit le logger les utilisateurs
            var domain = _routeProvider.Domains.Where(d => d.Id == currentRequest.DomainId && string.IsNullOrEmpty(d.RedirecToDomainId)).FirstOrDefault();

            masterDictionnary.Add("DomainLoginUrl", domain.DomainLoginUrl);

            return(master);
        }
 public JsonApiResourceService(
     IResourceRepository <TResource, TId> repository,
     IQueryLayerComposer queryLayerComposer,
     IPaginationContext paginationContext,
     IJsonApiOptions options,
     ILoggerFactory loggerFactory,
     ICurrentRequest currentRequest,
     IResourceChangeTracker <TResource> resourceChangeTracker,
     IResourceFactory resourceFactory,
     IResourceHookExecutor hookExecutor = null)
 {
     _repository            = repository;
     _queryLayerComposer    = queryLayerComposer;
     _paginationContext     = paginationContext;
     _options               = options;
     _currentRequest        = currentRequest;
     _logger                = loggerFactory.CreateLogger <JsonApiResourceService <TResource, TId> >();
     _resourceChangeTracker = resourceChangeTracker;
     _resourceFactory       = resourceFactory;
     _hookExecutor          = hookExecutor;
 }
Example #20
0
        public async Task <ExpandoObject> GetSitemapAsync(ICurrentRequest currentRequest)
        {
            var cacheItemValue =
                await _dataFactory.CacheRepository.GetValueAsync <ExpandoObject>(currentRequest, "Sitemap");

            if (cacheItemValue == null)
            {
                var sitemap = await _cacheProvider.GetSiteMapAsync(currentRequest);

                var cacheItem = new CacheItem();
                cacheItem.Value      = JsonConvert.SerializeObject(sitemap);
                cacheItem.Key        = JsonConvert.SerializeObject(currentRequest);
                cacheItem.Type       = "Sitemap";
                cacheItem.SiteId     = currentRequest.SiteId;
                cacheItem.CreateDate = DateTime.Now;
                await _dataFactory.CacheRepository.SaveAsync(cacheItem);

                return(sitemap);
            }
            // cacheItem.MasterJson
            //Json. ExpandoObject
            return(cacheItemValue);
        }
 public SparseFieldsService(IResourceGraph resourceGraph, ICurrentRequest currentRequest)
     : base(resourceGraph, currentRequest)
 {
 }
Example #22
0
 public FilterService(IResourceDefinitionProvider resourceDefinitionProvider, IResourceGraph resourceGraph, ICurrentRequest currentRequest) : base(resourceGraph, currentRequest)
 {
     _requestResourceDefinition = resourceDefinitionProvider.Get(_requestResource.ResourceType);
     _filters = new List <FilterQueryContext>();
 }
 public SparseFieldSetQueryStringParameterReader(ICurrentRequest currentRequest, IResourceContextProvider resourceContextProvider)
     : base(currentRequest, resourceContextProvider)
 {
     _sparseFieldSetParser = new SparseFieldSetParser(resourceContextProvider, ValidateSingleAttribute);
     _scopeParser          = new QueryStringParameterScopeParser(resourceContextProvider, FieldChainRequirements.IsRelationship);
 }
 public ResponseSerializerFactory(ICurrentRequest currentRequest, IScopedServiceProvider provider)
 {
     _currentRequest = currentRequest;
     _provider       = provider;
 }
Example #25
0
 public PageService(IJsonApiOptions options, IResourceGraph resourceGraph, ICurrentRequest currentRequest) : base(resourceGraph, currentRequest)
 {
     _options        = options;
     DefaultPageSize = _options.DefaultPageSize;
 }
Example #26
0
 public PaginationQueryStringParameterReader(ICurrentRequest currentRequest, IResourceContextProvider resourceContextProvider, IJsonApiOptions options)
     : base(currentRequest, resourceContextProvider)
 {
     _options          = options ?? throw new ArgumentNullException(nameof(options));
     _paginationParser = new PaginationParser(resourceContextProvider);
 }
 public IndexViewModelFeedConvertor(IUrlResolver urlResolver, ICurrentRequest currentRequest)
 {
     CurrentRequest = currentRequest;
     _urlResolver   = urlResolver;
 }
 public RedirectToOldBlogController(ICurrentRequest currentRequest)
 {
     _currentRequest = currentRequest;
 }
 public SortQueryStringParameterReader(ICurrentRequest currentRequest, IResourceContextProvider resourceContextProvider)
     : base(currentRequest, resourceContextProvider)
 {
     _scopeParser = new QueryStringParameterScopeParser(resourceContextProvider, FieldChainRequirements.EndsInToMany);
     _sortParser  = new SortParser(resourceContextProvider, ValidateSingleField);
 }
Example #30
0
        public static async Task <MenuItemBusiness> GetMenuItemAsync(UrlProvider urlProvider,
                                                                     ItemDataModel itemDataModel, ICurrentRequest currentRequest, string moduleName, bool isPrivate = false)
        {
            var moduleId = itemDataModel.Id;

            var freeBusinessModel = (ElementBusinessModel)itemDataModel.Data;
            var elements          = freeBusinessModel.Elements;
            var title             = FreeBusinessModule.GetTitle(elements);
            var normalizedTitle   = UrlHelper.NormalizeTextForUrl(title);

            var    propertyName = itemDataModel.PropertyName;
            object o            = new { title = normalizedTitle, moduleId };

            if (isPrivate)
            {
                o = new { title = normalizedTitle, moduleId, @private = "privee" };
            }

            var urlInfo = await urlProvider.GetUrlAsync(currentRequest, "Index", moduleName, o);

            var menuItem = new MenuItemBusiness();

            menuItem.Title      = title;
            menuItem.RouteDatas = GetRouteData("Index", moduleName, normalizedTitle, moduleId, propertyName);
            menuItem.Url        = urlInfo.Path;
            menuItem.RoutePath  = urlInfo.RoutePath;
            menuItem.RoutePathWithoutHomePage = urlInfo.RoutePathWithoutHomePage;
            menuItem.Route          = urlInfo.Route;
            menuItem.ModuleId       = moduleId;
            menuItem.ModuleName     = moduleName;
            menuItem.Icon           = freeBusinessModel.Icon;
            menuItem.State          = itemDataModel.State;
            menuItem.Seo            = new SeoBusiness();
            menuItem.Seo.UpdateDate = itemDataModel.UpdateDate.HasValue
                ? itemDataModel.UpdateDate.Value
                : itemDataModel.CreateDate;
            menuItem.Seo.SitemapFrequence = SitemapFrequence.Weekly;
            menuItem.Seo.SocialImageUrl   =
                FreeBusinessModule.GetFirstImageUrl(itemDataModel.SiteId, freeBusinessModel);

            var metaKeywords = elements.FirstOrDefault(e => e.Property == "MetaKeyword");

            if (metaKeywords != null)
            {
                elements.Remove(metaKeywords);
            }
            // TODO calculer en automatique
            menuItem.Seo.MetaKeyword     = "";
            menuItem.Seo.MetaDescription = FreeBusinessModule.GetMetaDescription(elements);

            return(menuItem);
        }
Example #31
0
 public IncludeQueryStringParameterReader(ICurrentRequest currentRequest, IResourceContextProvider resourceContextProvider, IJsonApiOptions options)
     : base(currentRequest, resourceContextProvider)
 {
     _options       = options ?? throw new ArgumentNullException(nameof(options));
     _includeParser = new IncludeParser(resourceContextProvider, ValidateSingleRelationship);
 }