public CustomerController( ICreateCustomerHandler createCustomerHandler, ICurrentRequest currentRequest) { _createCustomerHandler = createCustomerHandler; _currentRequest = currentRequest; }
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)); } }
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); } }
public SortService(IResourceDefinitionProvider resourceDefinitionProvider, IResourceGraph resourceGraph, ICurrentRequest currentRequest) : base(resourceGraph, currentRequest) { _resourceDefinitionProvider = resourceDefinitionProvider; _queries = new List <SortQueryContext>(); }
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; }
public LinkBuilder(IJsonApiOptions options, ICurrentRequest currentRequest, IPaginationContext paginationContext, IResourceContextProvider provider, IRequestQueryStringAccessor queryStringAccessor) { _options = options; _currentRequest = currentRequest; _paginationContext = paginationContext; _provider = provider; _queryStringAccessor = queryStringAccessor; }
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); } }
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); } } }
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; }
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) { }
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; }
public PageService(IJsonApiOptions options, IResourceGraph resourceGraph, ICurrentRequest currentRequest) : base(resourceGraph, currentRequest) { _options = options; DefaultPageSize = _options.DefaultPageSize; }
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); }
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); }
public IncludeQueryStringParameterReader(ICurrentRequest currentRequest, IResourceContextProvider resourceContextProvider, IJsonApiOptions options) : base(currentRequest, resourceContextProvider) { _options = options ?? throw new ArgumentNullException(nameof(options)); _includeParser = new IncludeParser(resourceContextProvider, ValidateSingleRelationship); }