/// <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="contentLinkResolver">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, IContentLinkResolver contentLinkResolver, IModelProvider modelProvider) { _source = source ?? throw new ArgumentNullException(nameof(source)); _linkedItemsSource = linkedItemsSource ?? throw new ArgumentNullException(nameof(linkedItemsSource)); _modelProvider = modelProvider ?? throw new ArgumentNullException(nameof(modelProvider)); _contentLinkResolver = contentLinkResolver; }
/// <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="contentLinkResolver">The resolver that can generate URLs for links in rich text elements.</param> internal DeliveryItemListingResponse(ApiResponse response, IModelProvider modelProvider, IContentLinkResolver contentLinkResolver) : base(response) { _modelProvider = modelProvider; _contentLinkResolver = contentLinkResolver; _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"], _contentLinkResolver, _modelProvider)).ToList().AsReadOnly(), LazyThreadSafetyMode.PublicationOnly); _linkedItems = new Lazy <JObject>(() => (JObject)_response.Content["modular_content"].DeepClone(), LazyThreadSafetyMode.PublicationOnly); }
/// <summary> /// Initializes a new instance of <see cref="ModelProvider"/>. /// </summary> public ModelProvider( IContentLinkResolver contentLinkResolver, IInlineContentItemsProcessor inlineContentItemsProcessor, ITypeProvider typeProvider, IPropertyMapper propertyMapper ) { _contentLinkResolver = contentLinkResolver; _inlineContentItemsProcessor = inlineContentItemsProcessor; _typeProvider = typeProvider; _propertyMapper = propertyMapper; }
/// <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 Kontent project.</param> /// <param name="contentLinkResolver">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 retry policy.</param> /// <param name="typeProvider">An instance of an object that can map Kentico Kontent content types to CLR types</param> /// <param name="propertyMapper">An instance of an object that can map Kentico Kontent content item fields to model properties</param> /// <param name="deliveryHttpClient">An instance of an object that can send request againts Kentico Kontent Delivery API</param> public DeliveryClient( IOptionsMonitor <DeliveryOptions> deliveryOptions, IContentLinkResolver contentLinkResolver = null, IInlineContentItemsProcessor contentItemsProcessor = null, IModelProvider modelProvider = null, IRetryPolicyProvider retryPolicyProvider = null, ITypeProvider typeProvider = null, IPropertyMapper propertyMapper = null, IDeliveryHttpClient deliveryHttpClient = null ) { DeliveryOptions = deliveryOptions; ContentLinkResolver = contentLinkResolver; InlineContentItemsProcessor = contentItemsProcessor; ModelProvider = modelProvider; RetryPolicyProvider = retryPolicyProvider; TypeProvider = typeProvider; PropertyMapper = propertyMapper; DeliveryHttpClient = deliveryHttpClient; }