/// <summary>
 /// Initializes a new instance of the <see cref="DeliveryItemResponse"/> class.
 /// </summary>
 /// <param name="response">The response from Kentico Kontent Delivery API that contains a content item.</param>
 /// <param name="modelProvider">The provider that can convert JSON responses into instances of .NET types.</param>
 /// <param name="contentLinkUrlResolver">The resolver that can generate URLs for links in rich text elements.</param>
 internal DeliveryItemResponse(ApiResponse response, IModelProvider modelProvider, IContentLinkUrlResolver contentLinkUrlResolver) : base(response)
 {
     _modelProvider          = modelProvider;
     _contentLinkUrlResolver = contentLinkUrlResolver;
     _item        = new Lazy <ContentItem>(() => new ContentItem(_response.Content["item"], _response.Content["modular_content"], _contentLinkUrlResolver, _modelProvider), LazyThreadSafetyMode.PublicationOnly);
     _linkedItems = new Lazy <JObject>(() => (JObject)_response.Content["modular_content"].DeepClone(), LazyThreadSafetyMode.PublicationOnly);
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="DeliveryClient"/> class for retrieving content of the specified project.
 /// </summary>
 /// <param name="deliveryOptions">The settings of the Kentico Cloud project.</param>
 /// <param name="contentLinkUrlResolver">An instance of an object that can resolve links in rich text elements</param>
 /// <param name="contentItemsProcessor">An instance of an object that can resolve modular content in rich text elements</param>
 /// <param name="codeFirstModelProvider">An instance of an object that can JSON responses into strongly typed CLR objects</param>
 /// <param name="retryPolicyProvider">A provider of a resilience (retry) policy.</param>
 public DeliveryClient(IOptions <DeliveryOptions> deliveryOptions, IContentLinkUrlResolver contentLinkUrlResolver = null, IInlineContentItemsProcessor contentItemsProcessor = null, ICodeFirstModelProvider codeFirstModelProvider = null, IResiliencePolicyProvider retryPolicyProvider = null)
     : this(deliveryOptions.Value)
 {
     ContentLinkUrlResolver      = contentLinkUrlResolver;
     InlineContentItemsProcessor = contentItemsProcessor;
     CodeFirstModelProvider      = codeFirstModelProvider;
     ResiliencePolicyProvider    = retryPolicyProvider;
 }
Beispiel #3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DeliveryItemListingResponse"/> class.
 /// </summary>
 /// <param name="response">The response from Kentico Kontent Delivery API that contains a list of content items.</param>
 /// <param name="modelProvider">The provider that can convert JSON responses into instances of .NET types.</param>
 /// <param name="contentLinkUrlResolver">The resolver that can generate URLs for links in rich text elements.</param>
 internal DeliveryItemListingResponse(ApiResponse response, IModelProvider modelProvider, IContentLinkUrlResolver contentLinkUrlResolver) : base(response)
 {
     _modelProvider          = modelProvider;
     _contentLinkUrlResolver = contentLinkUrlResolver;
     _pagination             = new Lazy <Pagination>(() => _response.Content["pagination"].ToObject <Pagination>(), LazyThreadSafetyMode.PublicationOnly);
     _items       = new Lazy <IReadOnlyList <ContentItem> >(() => ((JArray)_response.Content["items"]).Select(source => new ContentItem(source, _response.Content["modular_content"], _contentLinkUrlResolver, _modelProvider)).ToList().AsReadOnly(), LazyThreadSafetyMode.PublicationOnly);
     _linkedItems = new Lazy <JObject>(() => (JObject)_response.Content["modular_content"].DeepClone(), LazyThreadSafetyMode.PublicationOnly);
 }
        public ContentLinkResolver(IContentLinkUrlResolver linkUrlResolver)
        {
            if (linkUrlResolver == null)
            {
                throw new ArgumentNullException(nameof(linkUrlResolver));
            }

            _linkUrlResolver = linkUrlResolver;
        }
        public DeliveryClientTests()
        {
            _guid = Guid.NewGuid();
            var projectId = _guid.ToString();

            _baseUrl                    = $"https://deliver.kenticocloud.com/{projectId}";
            _mockHttp                   = new MockHttpMessageHandler();
            _mockTypeProvider           = A.Fake <ITypeProvider>();
            _mockContentLinkUrlResolver = A.Fake <IContentLinkUrlResolver>();
        }
 /// <summary>
 /// Initializes a new instance of <see cref="ModelProvider"/>.
 /// </summary>
 public ModelProvider(
     IContentLinkUrlResolver contentLinkUrlResolver,
     IInlineContentItemsProcessor inlineContentItemsProcessor,
     ITypeProvider typeProvider,
     IPropertyMapper propertyMapper
     )
 {
     _contentLinkUrlResolver      = contentLinkUrlResolver;
     _inlineContentItemsProcessor = inlineContentItemsProcessor;
     _typeProvider   = typeProvider;
     _propertyMapper = propertyMapper;
 }
Beispiel #7
0
        internal static DeliveryClient GetMockedDeliveryClientWithProjectId(
            Guid projectId,
            MockHttpMessageHandler httpMessageHandler = null,
            IModelProvider modelProvider   = null,
            IPropertyMapper propertyMapper = null,
            IRetryPolicyProvider resiliencePolicyProvider = null,
            ITypeProvider typeProvider = null,
            IContentLinkUrlResolver contentLinkUrlResolver           = null,
            IInlineContentItemsProcessor inlineContentItemsProcessor = null
            )
        {
            if (modelProvider != null)
            {
                _mockModelProvider = modelProvider;
            }
            if (propertyMapper != null)
            {
                _mockPropertyMapper = propertyMapper;
            }
            if (resiliencePolicyProvider != null)
            {
                _mockResiliencePolicyProvider = resiliencePolicyProvider;
            }
            if (typeProvider != null)
            {
                _mockTypeProvider = typeProvider;
            }
            if (contentLinkUrlResolver != null)
            {
                _mockContentLinkUrlResolver = contentLinkUrlResolver;
            }
            if (inlineContentItemsProcessor != null)
            {
                _mockInlineContentItemsProcessor = inlineContentItemsProcessor;
            }
            var httpClient = httpMessageHandler != null?httpMessageHandler.ToHttpClient() : MockHttp.ToHttpClient();

            var client = new DeliveryClient(
                DeliveryOptionsFactory.CreateMonitor(new DeliveryOptions {
                ProjectId = projectId.ToString()
            }),
                new ContentLinkResolver(_mockContentLinkUrlResolver),
                _mockInlineContentItemsProcessor,
                _mockModelProvider,
                _mockResiliencePolicyProvider,
                _mockTypeProvider,
                _mockPropertyMapper,
                new DeliveryHttpClient(httpClient)
                );

            return(client);
        }
Beispiel #8
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ContentItem"/> class with the specified JSON data.
        /// </summary>
        /// <param name="source">The JSON data of the content item to deserialize.</param>
        /// <param name="linkedItemsSource">The JSON data of linked items to deserialize.</param>
        /// <param name="contentLinkUrlResolver">An instance of an object that can resolve links in rich text elements</param>
        /// <param name="modelProvider">An instance of an object that can JSON responses into strongly typed CLR objects</param>
        internal ContentItem(JToken source, JToken linkedItemsSource, IContentLinkUrlResolver contentLinkUrlResolver, IModelProvider modelProvider)
        {
            _source            = source ?? throw new ArgumentNullException(nameof(source));
            _linkedItemsSource = linkedItemsSource ?? throw new ArgumentNullException(nameof(linkedItemsSource));
            _modelProvider     = modelProvider ?? throw new ArgumentNullException(nameof(modelProvider));

            _contentLinkUrlResolver = contentLinkUrlResolver;
            ContentLinkResolver     = new Lazy <ContentLinkResolver>(() =>
                                                                     _contentLinkUrlResolver != null
                    ? new ContentLinkResolver(_contentLinkUrlResolver)
                    : null
                                                                     );
        }
Beispiel #9
0
 /// <summary>
 /// Initializes a new instance of <see cref="ModelProvider"/>.
 /// </summary>
 public ModelProvider(
     IContentLinkUrlResolver contentLinkUrlResolver,
     IInlineContentItemsProcessor inlineContentItemsProcessor,
     ITypeProvider typeProvider,
     IPropertyMapper propertyMapper,
     JsonSerializer serializer,
     IHtmlParser htmlParser)
 {
     ContentLinkUrlResolver      = contentLinkUrlResolver;
     InlineContentItemsProcessor = inlineContentItemsProcessor;
     TypeProvider   = typeProvider;
     PropertyMapper = propertyMapper;
     Serializer     = serializer;
     HtmlParser     = htmlParser;
 }
Beispiel #10
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DeliveryClient"/> class for retrieving content of the specified project.
 /// </summary>
 /// <param name="deliveryOptions">The settings of the Kentico Cloud project.</param>
 /// <param name="httpClient">A custom HTTP client instance</param>
 /// <param name="contentLinkUrlResolver">An instance of an object that can resolve links in rich text elements</param>
 /// <param name="contentItemsProcessor">An instance of an object that can resolve linked items in rich text elements</param>
 /// <param name="modelProvider">An instance of an object that can JSON responses into strongly typed CLR objects</param>
 /// <param name="retryPolicyProvider">A provider of a resilience (retry) policy.</param>
 /// <param name="typeProvider">An instance of an object that can map Kentico Cloud content types to CLR types</param>
 /// <param name="propertyMapper">An instance of an object that can map Kentico Cloud content item fields to model properties</param>
 public DeliveryClient(
     IOptions <DeliveryOptions> deliveryOptions,
     HttpClient httpClient = null,
     IContentLinkUrlResolver contentLinkUrlResolver     = null,
     IInlineContentItemsProcessor contentItemsProcessor = null,
     IModelProvider modelProvider = null,
     IResiliencePolicyProvider retryPolicyProvider = null,
     ITypeProvider typeProvider     = null,
     IPropertyMapper propertyMapper = null
     )
 {
     DeliveryOptions             = deliveryOptions.Value;
     HttpClient                  = httpClient;
     ContentLinkUrlResolver      = contentLinkUrlResolver;
     InlineContentItemsProcessor = contentItemsProcessor;
     ModelProvider               = modelProvider;
     ResiliencePolicyProvider    = retryPolicyProvider;
     TypeProvider                = typeProvider;
     PropertyMapper              = propertyMapper;
 }
Beispiel #11
0
 public ContentLinkResolver(IContentLinkUrlResolver contentLinkUrlResolver)
 {
     ContentLinkUrlResolver = contentLinkUrlResolver ?? throw new ArgumentNullException(nameof(contentLinkUrlResolver));
 }
Beispiel #12
0
 IOptionalClientSetup IOptionalClientSetup.WithContentLinkUrlResolver(IContentLinkUrlResolver contentLinkUrlResolver)
 => RegisterOrThrow(contentLinkUrlResolver, nameof(contentLinkUrlResolver));
Beispiel #13
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DeliveryItemResponse"/> class with information from a response.
 /// </summary>
 /// <param name="response">A response from Kentico Cloud Delivery API that contains a content item.</param>
 /// /// <param name="modelProvider">An instance of an object that can JSON responses into strongly typed CLR objects</param>
 /// <param name="contentLinkUrlResolver">An instance of an object that can resolve links in rich text elements</param>
 /// <param name="apiUrl">API URL used to communicate with the underlying Kentico Cloud endpoint.</param>
 internal DeliveryItemResponse(JToken response, IModelProvider modelProvider, IContentLinkUrlResolver contentLinkUrlResolver, string apiUrl) : base(apiUrl)
 {
     _response               = response;
     _modelProvider          = modelProvider;
     _contentLinkUrlResolver = contentLinkUrlResolver;
 }