public void SetConfiguration(IBookablePairIdTemplate template, SingleIdTemplate <SellerIdComponents> sellerTemplate)
        {
            if (template as BookablePairIdTemplate <TComponents> == null)
            {
                throw new NotSupportedException($"{template.GetType().ToString()} does not match {typeof(BookablePairIdTemplate<TComponents>).ToString()}. All types of IBookableIdComponents (T) used for BookablePairIdTemplate<T> assigned to feeds via settings.IdConfiguration must match those used for RPDEFeedGenerator<T> in settings.OpenDataFeeds.");
            }

            base.SetConfiguration((BookablePairIdTemplate <TComponents>)template, sellerTemplate);
        }
        public void SingleIdTemplate_GetIdComponents_UrlEncoded()
        {
            var template = new SingleIdTemplate <SessionSeriesComponents>(
                "{+BaseUrl}api/{EventType}/{SessionSeriesId}/events/{ScheduledSessionId}"
                );

            template.RequiredBaseUrl = new Uri("https://example.com/");

            var components = template.GetIdComponents(new Uri("https://example.com/api/session-series/2020-02-23T17%3A30%3A00Z/events/123"));

            Assert.Equal("session-series", components.EventType);
            Assert.Equal("2020-02-23T17:30:00Z", components.SessionSeriesId);
            Assert.Equal(123, components.ScheduledSessionId);
        }
        public void SingleIdTemplate_GetIdComponents()
        {
            var template = new SingleIdTemplate <SessionSeriesComponents>(
                "{+BaseUrl}api/{EventType}/{SessionSeriesId}/events/{ScheduledSessionId}"
                );

            template.RequiredBaseUrl = new Uri("https://example.com/");

            var components = template.GetIdComponents(new Uri("https://example.com/api/session-series/asdf/events/123"));

            Assert.Equal("session-series", components.EventType);
            Assert.Equal("asdf", components.SessionSeriesId);
            Assert.Equal(123, components.ScheduledSessionId);
        }
        public void SingleIdTemplate_RenderId_UrlEncoded()
        {
            var template = new SingleIdTemplate <SessionSeriesComponents>(
                "{+BaseUrl}api/{EventType}/{SessionSeriesId}/events/{ScheduledSessionId}"
                );

            template.RequiredBaseUrl = new Uri("https://example.com/");

            var uri = new Uri("https://example.com/api/session-series/2020-02-23T17%3A30%3A00Z/events/123");

            var components = template.GetIdComponents(uri);

            var outputUri = template.RenderId(components);

            Assert.Equal(uri, outputUri);
        }
示例#5
0
 internal void SetConfiguration(SingleIdTemplate <SellerIdComponents> template)
 {
     this.IdTemplate = template;
 }
示例#6
0
 protected internal void SetConfiguration(BookablePairIdTemplate <TComponents> template, SingleIdTemplate <SellerIdComponents> sellerTemplate)
 {
     this.IdTemplate       = template;
     this.SellerIdTemplate = sellerTemplate;
 }
        public void SetConfiguration(OpportunityTypeConfiguration opportunityTypeConfiguration, Uri jsonLdIdBaseUrl, int rpdePageSize, IBookablePairIdTemplate bookablePairIdTemplate, SingleIdTemplate <SellerIdComponents> sellerTemplate, Uri openDataFeedBaseUrl)
        {
            if (!(bookablePairIdTemplate is BookablePairIdTemplate <TComponents>))
            {
                throw new InternalOpenBookingException(new InternalLibraryConfigurationError(), $"{bookablePairIdTemplate.GetType()} does not match {typeof(BookablePairIdTemplate<TComponents>)}. All types of IBookableIdComponents (T) used for BookablePairIdTemplate<T> assigned to feeds via settings.IdConfiguration must match those used for RPDEFeedGenerator<T> in settings.OpenDataFeeds.");
            }

            if (opportunityTypeConfiguration.SameAs.AbsolutePath.Trim('/') != typeof(TClass).Name)
            {
                throw new InternalOpenBookingException(new InternalLibraryConfigurationError(), $"'{GetType()}' does not have this expected OpenActive model type as generic parameter: '{opportunityTypeConfiguration.SameAs.AbsolutePath.Trim('/')}'");
            }

            base.SetConfiguration((BookablePairIdTemplate <TComponents>)bookablePairIdTemplate, sellerTemplate);

            RpdePageSize = rpdePageSize;

            // Allow these to be overridden by implementations if customisation is required
            FeedUrl  = FeedUrl ?? new Uri(openDataFeedBaseUrl + opportunityTypeConfiguration.DefaultFeedPath);
            FeedPath = FeedPath ?? opportunityTypeConfiguration.DefaultFeedPath;
        }
示例#8
0
        internal void SetConfiguration(int rpdePageSize, OrderIdTemplate orderIdTemplate, SingleIdTemplate <SellerIdComponents> sellerIdTemplate, Uri ordersFeedBaseUrl, OrderType feedType)
        {
            base.SetConfiguration(orderIdTemplate, sellerIdTemplate);

            this.RPDEPageSize = rpdePageSize;

            // Allow these to be overridden by implementations if customisation is required
            this.FeedUrl = new Uri(ordersFeedBaseUrl.ToString() + "/" + (feedType == OrderType.Order ? "orders" : "order-proposals") + "-rpde");
        }
示例#9
0
        internal void SetConfiguration(int rpdePageSize, OrderIdTemplate orderIdTemplate, SingleIdTemplate <SellerIdComponents> sellerIdTemplate, Uri offersFeedUrl)
        {
            this.OrderIdTemplate = orderIdTemplate;

            this.SellerIdTemplate = sellerIdTemplate;

            this.RPDEPageSize = rpdePageSize;

            // Allow these to be overridden by implementations if customisation is required
            this.FeedUrl = offersFeedUrl;
        }
示例#10
0
 protected internal void SetConfiguration(OrderIdTemplate orderIdTemplate, SingleIdTemplate <SellerIdComponents> sellerIdTemplate)
 {
     this.OrderIdTemplate  = orderIdTemplate;
     this.SellerIdTemplate = sellerIdTemplate;
 }