public PeopleController(
     IJsonApiOptions jsonApiOptions,
     ILoggerFactory loggerFactory,
     IResourceService <Person> resourceService)
     : base(jsonApiOptions, loggerFactory, resourceService)
 {
 }
예제 #2
0
 public TodoItemsController(
     IJsonApiOptions jsonApiOptions,
     IResourceService <TodoItem> resourceService,
     ILoggerFactory loggerFactory)
     : base(jsonApiOptions, resourceService, loggerFactory)
 {
 }
예제 #3
0
 public VisasController(
     IJsonApiOptions jsonApiOptions,
     ILoggerFactory loggerFactory,
     IResourceService <Visa> resourceService)
     : base(jsonApiOptions, loggerFactory, resourceService)
 {
 }
 /// <inheritdoc />
 protected JsonApiQueryController(
     IJsonApiOptions context,
     ILoggerFactory loggerFactory,
     IResourceQueryService <TResource, TId> queryService)
     : base(context, loggerFactory, queryService)
 {
 }
 public PositionsController(
     IJsonApiOptions jsonApiOptions,
     ILoggerFactory loggerFactory,
     IResourceService <Position, Guid> resourceService)
     : base(jsonApiOptions, loggerFactory, resourceService)
 {
 }
예제 #6
0
 protected AbstractTodoItemsController(
     IJsonApiOptions jsonApiOptions,
     ILoggerFactory loggerFactory,
     IResourceService <T, int> service)
     : base(jsonApiOptions, loggerFactory, service)
 {
 }
예제 #7
0
 public ResourceController(
     IJsonApiOptions jsonApiOptions,
     ILoggerFactory loggerFactory,
     IResourceService <Resource, int> resourceService)
     : base(jsonApiOptions, loggerFactory, resourceService)
 {
 }
예제 #8
0
 public OrdersController(
     IJsonApiOptions options,
     ILoggerFactory loggerFactory,
     IResourceService <Order> resourceService)
     : base(options, loggerFactory, resourceService)
 {
 }
예제 #9
0
 public PassportsController(
     IJsonApiOptions options,
     ILoggerFactory loggerFactory,
     IResourceService <Passport, int> resourceService)
     : base(options, loggerFactory, resourceService)
 {
 }
예제 #10
0
 public DomainValueNumbersController(
     IJsonApiOptions jsonApiOptions,
     ILoggerFactory loggerFactory,
     IResourceService <DomainValueNumber, Guid> resourceService)
     : base(jsonApiOptions, loggerFactory, resourceService)
 {
 }
예제 #11
0
 public CountriesController(
     IJsonApiOptions jsonApiOptions,
     ILoggerFactory loggerFactory,
     IResourceService <Country> resourceService)
     : base(jsonApiOptions, loggerFactory, resourceService)
 {
 }
예제 #12
0
 public PersonRolesController(
     IJsonApiOptions jsonApiOptions,
     IResourceService <PersonRole> resourceService,
     ILoggerFactory loggerFactory)
     : base(jsonApiOptions, resourceService, loggerFactory)
 {
 }
예제 #13
0
 public JsonApiController(
     IJsonApiOptions jsonApiOptions,
     ILoggerFactory loggerFactory,
     IResourceService <T, TId> resourceService)
     : base(jsonApiOptions, loggerFactory, resourceService)
 {
 }
 public KebabCasedModelsController(
     IJsonApiOptions jsonApiOptions,
     ILoggerFactory loggerFactory,
     IResourceService <KebabCasedModel> resourceService)
     : base(jsonApiOptions, loggerFactory, resourceService)
 {
 }
        public JsonApiResourceService(
            IResourceRepositoryAccessor repositoryAccessor,
            IQueryLayerComposer queryLayerComposer,
            IPaginationContext paginationContext,
            IJsonApiOptions options,
            ILoggerFactory loggerFactory,
            IJsonApiRequest request,
            IResourceChangeTracker <TResource> resourceChangeTracker,
            IResourceHookExecutorFacade hookExecutor)
        {
            ArgumentGuard.NotNull(repositoryAccessor, nameof(repositoryAccessor));
            ArgumentGuard.NotNull(queryLayerComposer, nameof(queryLayerComposer));
            ArgumentGuard.NotNull(paginationContext, nameof(paginationContext));
            ArgumentGuard.NotNull(options, nameof(options));
            ArgumentGuard.NotNull(loggerFactory, nameof(loggerFactory));
            ArgumentGuard.NotNull(request, nameof(request));
            ArgumentGuard.NotNull(resourceChangeTracker, nameof(resourceChangeTracker));
            ArgumentGuard.NotNull(hookExecutor, nameof(hookExecutor));

            _repositoryAccessor    = repositoryAccessor;
            _queryLayerComposer    = queryLayerComposer;
            _paginationContext     = paginationContext;
            _options               = options;
            _request               = request;
            _resourceChangeTracker = resourceChangeTracker;
            _hookExecutor          = hookExecutor;
            _traceWriter           = new TraceLogWriter <JsonApiResourceService <TResource, TId> >(loggerFactory);
        }
예제 #16
0
 /// <inheritdoc />
 protected JsonApiCommandController(
     IJsonApiOptions options,
     ILoggerFactory loggerFactory,
     IResourceCommandService <TResource, TId> commandService)
     : base(options, loggerFactory, null, commandService)
 {
 }
        public DefaultsQueryStringParameterReader(IJsonApiOptions options)
        {
            ArgumentGuard.NotNull(options, nameof(options));

            _options = options;
            SerializerDefaultValueHandling = options.SerializerSettings.DefaultValueHandling;
        }
 public ArticlesController(
     IJsonApiOptions jsonApiOptions,
     ILoggerFactory loggerFactory,
     IResourceService <Article> resourceService)
     : base(jsonApiOptions, loggerFactory, resourceService)
 {
 }
예제 #19
0
 public TodoItemsTestController(
     IJsonApiOptions jsonApiOptions,
     ILoggerFactory loggerFactory,
     IResourceService <TodoItem> service)
     : base(jsonApiOptions, loggerFactory, service)
 {
 }
        public JsonApiResourceService(
            IResourceRepository <TResource, TId> repository,
            IQueryLayerComposer queryLayerComposer,
            IPaginationContext paginationContext,
            IJsonApiOptions options,
            ILoggerFactory loggerFactory,
            IJsonApiRequest request,
            IResourceChangeTracker <TResource> resourceChangeTracker,
            IResourceFactory resourceFactory,
            IResourceHookExecutor hookExecutor = null)
        {
            if (loggerFactory == null)
            {
                throw new ArgumentNullException(nameof(loggerFactory));
            }

            _repository            = repository ?? throw new ArgumentNullException(nameof(repository));
            _queryLayerComposer    = queryLayerComposer ?? throw new ArgumentNullException(nameof(queryLayerComposer));
            _paginationContext     = paginationContext ?? throw new ArgumentNullException(nameof(paginationContext));
            _options               = options ?? throw new ArgumentNullException(nameof(options));
            _traceWriter           = new TraceLogWriter <JsonApiResourceService <TResource, TId> >(loggerFactory);
            _request               = request ?? throw new ArgumentNullException(nameof(request));
            _resourceChangeTracker = resourceChangeTracker ?? throw new ArgumentNullException(nameof(resourceChangeTracker));
            _resourceFactory       = resourceFactory ?? throw new ArgumentNullException(nameof(resourceFactory));
            _hookExecutor          = hookExecutor;
        }
예제 #21
0
 public SuperUsersController(
     IJsonApiOptions jsonApiOptions,
     ILoggerFactory loggerFactory,
     IResourceService <SuperUser> resourceService)
     : base(jsonApiOptions, loggerFactory, resourceService)
 {
 }
예제 #22
0
        public async Task Invoke(HttpContext httpContext,
                                 IControllerResourceMapping controllerResourceMapping,
                                 IJsonApiOptions options,
                                 ICurrentRequest currentRequest,
                                 IResourceContextProvider resourceContextProvider)
        {
            var routeValues = httpContext.GetRouteData().Values;

            var primaryResourceContext = CreatePrimaryResourceContext(routeValues, controllerResourceMapping, resourceContextProvider);

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

                SetupCurrentRequest((CurrentRequest)currentRequest, primaryResourceContext, routeValues, options, resourceContextProvider, httpContext.Request);

                httpContext.SetJsonApiRequest();
            }

            await _next(httpContext);
        }
예제 #23
0
        private static void SetupRequest(JsonApiRequest request, ResourceContext primaryResourceContext,
                                         RouteValueDictionary routeValues, IJsonApiOptions options, IResourceContextProvider resourceContextProvider,
                                         HttpRequest httpRequest)
        {
            request.IsReadOnly      = httpRequest.Method == HttpMethod.Get.Method;
            request.Kind            = EndpointKind.Primary;
            request.PrimaryResource = primaryResourceContext;
            request.PrimaryId       = GetPrimaryRequestId(routeValues);
            request.BasePath        = GetBasePath(primaryResourceContext.ResourceName, options, httpRequest);

            var relationshipName = GetRelationshipNameForSecondaryRequest(routeValues);

            if (relationshipName != null)
            {
                request.Kind = IsRouteForRelationship(routeValues) ? EndpointKind.Relationship : EndpointKind.Secondary;

                var requestRelationship =
                    primaryResourceContext.Relationships.SingleOrDefault(relationship =>
                                                                         relationship.PublicName == relationshipName);

                if (requestRelationship != null)
                {
                    request.Relationship      = requestRelationship;
                    request.SecondaryResource = resourceContextProvider.GetResourceContext(requestRelationship.RightType);
                }
            }

            request.IsCollection = request.PrimaryId == null || request.Relationship is HasManyAttribute;
        }
 /// <inheritdoc />
 protected JsonApiController(
     IJsonApiOptions options,
     ILoggerFactory loggerFactory,
     IResourceService <TResource, TId> resourceService)
     : base(options, loggerFactory, resourceService)
 {
 }
예제 #25
0
 public TodoItemsController(
     IJsonApiOptions options,
     ILoggerFactory loggerFactory,
     IResourceService <TodoItem, string> resourceService)
     : base(options, loggerFactory, resourceService)
 {
 }
 public ReportsController(
     IJsonApiOptions jsonApiOptions,
     ILoggerFactory loggerFactory,
     IGetAllService <Report> getAll)
     : base(jsonApiOptions, loggerFactory, getAll)
 {
 }
 public PersonRolesController(
     IJsonApiOptions options,
     ILoggerFactory loggerFactory,
     IResourceService <PersonRole> resourceService)
     : base(options, loggerFactory, resourceService)
 {
 }
 protected JsonApiCommandController(
     IJsonApiOptions jsonApiOptions,
     ILoggerFactory loggerFactory,
     IResourceCommandService <T, int> commandService)
     : base(jsonApiOptions, loggerFactory, commandService)
 {
 }
        private static string GetBasePath(string resourceName, IJsonApiOptions options, HttpRequest httpRequest)
        {
            var builder = new StringBuilder();

            if (!options.RelativeLinks)
            {
                builder.Append(httpRequest.Scheme);
                builder.Append("://");
                builder.Append(httpRequest.Host);
            }

            string customRoute = GetCustomRoute(resourceName, options.Namespace, httpRequest.HttpContext);

            if (!string.IsNullOrEmpty(customRoute))
            {
                builder.Append('/');
                builder.Append(customRoute);
            }
            else if (!string.IsNullOrEmpty(options.Namespace))
            {
                builder.Append('/');
                builder.Append(options.Namespace);
            }

            return(builder.ToString());
        }
 public CustomJsonApiController(
     IJsonApiOptions options,
     IResourceService <T, int> resourceService,
     ILoggerFactory loggerFactory)
     : base(options, resourceService, loggerFactory)
 {
 }