public static IHypermediaBuilder <TDocument> AddRouteLink <TDocument>(this IHypermediaBuilder <TDocument> builder, string rel, string routeName, Func <TDocument, bool> conditionHandler)
            where TDocument : IHypermediaDocument
        {
            ValidateCommonParameters(builder, rel, routeName);

            return(builder.AddLinksPerCondition(conditionHandler, b => DoAddRouteLink(b, rel, routeName)));
        }
        public static IHypermediaBuilder <TDocument> AddRouteTemplate <TDocument>(this IHypermediaBuilder <TDocument> builder, string rel, string routeName)
            where TDocument : IHypermediaDocument
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (string.IsNullOrWhiteSpace(rel))
            {
                throw new ArgumentException($"Parameter '{nameof(rel)}' must not be null or empty.");
            }

            if (string.IsNullOrWhiteSpace(routeName))
            {
                throw new ArgumentException($"Parameter '{nameof(routeName)}' must not be null or empty.");
            }

            var link = builder.Service.GetLink(LinkRequestBuilder
                                               .CreateWithRouteName(routeName)
                                               .SetIsTemplated());

            builder.AddLink(rel, link);

            return(builder);
        }
        public static IHypermediaBuilder <TDocument> AddRouteLink <TDocument>(this IHypermediaBuilder <TDocument> builder, string rel, string routeName)
            where TDocument : IHypermediaDocument
        {
            ValidateCommonParameters(builder, rel, routeName);

            return(DoAddRouteLink(builder, rel, routeName));
        }
コード例 #4
0
        public HypermediaConfiguration(
            ILatestApiVersion version,
            IHypermediaAppender <ApiError> errorAppender,
            IHypermediaAppender <ApiVersion> versionAppender,
            IHypermediaAppender <PagedList <ApiVersion> > versionPagedAppender,
            IHypermediaAppender <Job> jobAppender,
            IHypermediaAppender <PagedList <Job> > jobPagedAppender,
            IHypermediaAppender <JobByDescriptionPagedList> jobByDescriptionPagedAppender,
            IHypermediaAppender <Schedule> scheduleAppender,
            IHypermediaAppender <PagedList <Schedule> > schedulePagedAppender,
            IHypermediaAppender <ScheduleByJobPagedList> scheduleByJobPagedAppender,
            IHypermediaAppender <ScheduleByDescriptionPagedList> scheduleByDescriptionPagedAppender)
        {
            _version                            = version;
            _errorAppender                      = errorAppender;
            _versionAppender                    = versionAppender;
            _versionPagedAppender               = versionPagedAppender;
            _jobAppender                        = jobAppender;
            _jobPagedAppender                   = jobPagedAppender;
            _jobByDescriptionPagedAppender      = jobByDescriptionPagedAppender;
            _scheduleAppender                   = scheduleAppender;
            _schedulePagedAppender              = schedulePagedAppender;
            _scheduleByJobPagedAppender         = scheduleByJobPagedAppender;
            _scheduleByDescriptionPagedAppender = scheduleByDescriptionPagedAppender;

            _curie = new CuriesLink(Curies.Jobbie, $"https://jobbie-api.com/v{_version}/docs/{{rel}}");

            _builder = Hal.Hypermedia.CreateBuilder();

            RegisterApiError();
            RegisterVersion();
            RegisterJob();
            RegisterSchedule();
        }
コード例 #5
0
        public static IHypermediaBuilder <TDocument> AddLink <TDocument>(this IHypermediaBuilder <TDocument> builder, string rel, string href, Func <TDocument, bool> conditionHandler)
            where TDocument : IHypermediaDocument
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (string.IsNullOrWhiteSpace(rel))
            {
                throw new ArgumentException($"Parameter '{nameof(rel)}' must not be null or empty.");
            }

            if (string.IsNullOrWhiteSpace(href))
            {
                throw new ArgumentException($"Parameter '{nameof(href)}' must not be null or empty.");
            }

            if (conditionHandler == null)
            {
                throw new ArgumentNullException(nameof(conditionHandler));
            }

            return(DoAddLinksPerCondition(builder, conditionHandler, b => DoAddLink(b, rel, href)));
        }
        public static IHypermediaBuilder <TDocument> AddLink <TDocument>(this IHypermediaBuilder <TDocument> builder, string rel, string href, string method)
            where TDocument : IHypermediaDocument
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (string.IsNullOrWhiteSpace(rel))
            {
                throw new ArgumentException($"Parameter '{nameof(rel)}' must not be null or empty.");
            }

            if (string.IsNullOrWhiteSpace(href))
            {
                throw new ArgumentException($"Parameter '{nameof(href)}' must not be null or empty.");
            }

            if (string.IsNullOrWhiteSpace(method))
            {
                throw new ArgumentException($"Parameter '{nameof(method)}' must not be null or empty.");
            }

            return(DoAddLink(builder, rel, href, method));
        }
        private static IHypermediaBuilder <TDocument> DoAddLink <TDocument>(IHypermediaBuilder <TDocument> builder, string rel, string href, string method) where TDocument : IHypermediaDocument
        {
            var link = new HttpLink(href, method);

            builder.AddLink(rel, link);

            return(builder);
        }
        private static IHypermediaBuilder <TDocument> DoAddRouteLink <TDocument>(IHypermediaBuilder <TDocument> builder, string rel, string routeName)
            where TDocument : IHypermediaDocument
        {
            var link = builder.Service.GetLink(LinkRequestBuilder
                                               .CreateWithRouteName(routeName));

            builder.AddLink(rel, link);

            return(builder);
        }
        public HypermediaBuilderExtensionTests()
        {
            mockService = new Mock <IHypermediaService>();
            mockSut     = new Mock <IHypermediaBuilder <IHypermediaDocument> >();
            mockSut
            .Setup(x => x.Service)
            .Returns(mockService.Object);

            sut = mockSut.Object;
        }
コード例 #10
0
 public UserController(IUserApplicationService userApplication,
                       ILog logger,
                       IPaginationHelper paginationHelper,
                       IHypermediaBuilder hypermediaBuilder)
 {
     _userApplication   = userApplication;
     _logger            = logger;
     _paginationHelper  = paginationHelper;
     _hypermediaBuilder = hypermediaBuilder;
 }
        public static IHypermediaBuilder <TDocument> AddRouteLink <TDocument>(this IHypermediaBuilder <TDocument> builder, string rel, string routeName, object routeValues)
            where TDocument : IHypermediaDocument
        {
            ValidateCommonParameters(builder, rel, routeName);

            if (routeValues == null)
            {
                throw new ArgumentNullException(nameof(routeValues));
            }

            return(DoAddRouteLink(builder, rel, routeName, routeValues));
        }
        public static IHypermediaBuilder <TDocument> AddRouteLink <TDocument>(this IHypermediaBuilder <TDocument> builder, string rel, string routeName, object routeValues, Func <TDocument, bool> conditionHandler)
            where TDocument : IHypermediaDocument
        {
            ValidateCommonParameters(builder, rel, routeName);

            if (routeValues == null)
            {
                throw new ArgumentNullException(nameof(routeValues));
            }

            return(builder.AddLinksPerCondition(conditionHandler, b => DoAddRouteLink(b, rel, routeName, routeValues)));
        }
コード例 #13
0
        public HypermediaBuilderExtensionTests()
        {
            mockService = new Mock <IHypermediaService>();
            mockService
            .Setup(x => x.GetLink(It.Is <LinkRequest>(y => y.GetRouteName() == TestRouteName)))
            .Returns(new Link(TestHref));

            mockSut = new Mock <IHypermediaBuilder <IHypermediaDocument> >();
            mockSut
            .Setup(x => x.Service)
            .Returns(mockService.Object);

            sut = mockSut.Object;
        }
コード例 #14
0
        public static void Register <T>(this IHypermediaBuilder builder, Link <T> selfLink, params Link[] links) where T : class, IResource
        {
            if (selfLink == null)
            {
                throw new ArgumentNullException("selfLink");
            }

            builder.RegisterSelf(selfLink);
            builder.RegisterLinks <T>(links);
            builder.RegisterAppender(new ActionBasedHypermediaAppender <T>(
                                         (resource, configured) =>
            {
                resource.Links = configured.ToList();
            }));
        }
コード例 #15
0
        public static void Register <T>(this IHypermediaBuilder builder, Link <T> selfLink, IHypermediaAppender <T> appender, params Link[] links) where T : class, IResource
        {
            if (selfLink == null)
            {
                throw new ArgumentNullException("selfLink");
            }

            if (appender == null)
            {
                throw new ArgumentNullException("appender");
            }

            builder.RegisterSelf(selfLink);
            builder.RegisterAppender(appender);
            builder.RegisterLinks <T>(links);
        }
コード例 #16
0
        public static void Register <T>(this IHypermediaBuilder builder, Link <T> selfLink, Action <T, IEnumerable <Link> > appender, params Link[] links) where T : class, IResource
        {
            if (selfLink == null)
            {
                throw new ArgumentNullException(nameof(selfLink));
            }

            if (appender == null)
            {
                throw new ArgumentNullException(nameof(appender));
            }

            builder.RegisterSelf(selfLink);
            builder.RegisterAppender(new ActionBasedHypermediaAppender <T>(appender));
            builder.RegisterLinks <T>(links);
        }
コード例 #17
0
        public static IHypermediaBuilder <TDocument> AddLinksToChild <TDocument>(this IHypermediaBuilder <TDocument> builder, Action <TDocument, IHypermediaService> childHandler)
            where TDocument : IHypermediaDocument
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (childHandler == null)
            {
                throw new ArgumentNullException(nameof(childHandler));
            }

            childHandler.Invoke(builder.Document, builder.Service);

            return(builder);
        }
        private static void ValidateCommonParameters <TDocument>(IHypermediaBuilder <TDocument> builder, string rel, string routeName) where TDocument : IHypermediaDocument
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (string.IsNullOrWhiteSpace(rel))
            {
                throw new ArgumentException($"Parameter '{nameof(rel)}' must not be null or empty.");
            }

            if (string.IsNullOrWhiteSpace(routeName))
            {
                throw new ArgumentException($"Parameter '{nameof(routeName)}' must not be null or empty.");
            }
        }
コード例 #19
0
        private static IHypermediaBuilder <TDocument> DoAddLinksPerCondition <TDocument>(IHypermediaBuilder <TDocument> builder, Func <TDocument, bool> conditionHandler, Action <IHypermediaBuilder <TDocument> > builderHandler) where TDocument : IHypermediaDocument
        {
            if (!conditionHandler.Invoke(builder.Document))
            {
                return(builder);
            }

            builderHandler.Invoke(builder);

            return(builder);
        }
コード例 #20
0
        public static IHypermediaBuilder <TDocument> AddLinksPerCondition <TDocument>(this IHypermediaBuilder <TDocument> builder, Func <TDocument, bool> conditionHandler, Action <IHypermediaBuilder <TDocument> > builderHandler)
            where TDocument : IHypermediaDocument
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (conditionHandler == null)
            {
                throw new ArgumentNullException(nameof(conditionHandler));
            }

            if (builderHandler == null)
            {
                throw new ArgumentNullException(nameof(builderHandler));
            }

            return(DoAddLinksPerCondition(builder, conditionHandler, builderHandler));
        }
 public HypermediaBuilderExtensionTests()
 {
     mockSut = new Mock <IHypermediaBuilder <IHypermediaDocument> >();
     sut     = mockSut.Object;
 }
 public static IHypermediaBuilder <TDocument> AddSelfRouteLink <TDocument>(this IHypermediaBuilder <TDocument> builder, string routeName, object routeValues, Func <TDocument, bool> conditionHandler)
     where TDocument : IHypermediaDocument
 {
     return(AddRouteLink(builder, SelfRel, routeName, routeValues, conditionHandler));
 }
 public static IHypermediaBuilder <TDocument> AddSelfRouteLink <TDocument>(this IHypermediaBuilder <TDocument> builder, string routeName)
     where TDocument : IHypermediaDocument
 {
     return(AddRouteLink(builder, SelfRel, routeName));
 }
コード例 #24
0
 public KeyController(IUserApplicationService userApplication, IHypermediaBuilder hypermediaBuilder)
 {
     _userApplication   = userApplication;
     _hypermediaBuilder = hypermediaBuilder;
 }