/// <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; }
/// <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; }
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); }
/// <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 ); }
/// <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; }
/// <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; }
public ContentLinkResolver(IContentLinkUrlResolver contentLinkUrlResolver) { ContentLinkUrlResolver = contentLinkUrlResolver ?? throw new ArgumentNullException(nameof(contentLinkUrlResolver)); }
IOptionalClientSetup IOptionalClientSetup.WithContentLinkUrlResolver(IContentLinkUrlResolver contentLinkUrlResolver) => RegisterOrThrow(contentLinkUrlResolver, nameof(contentLinkUrlResolver));
/// <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; }