private InlineContentItemsProcessorFactory AndResolver <TContentItem>(IInlineContentItemsResolver <TContentItem> resolver) { var typelessResolver = TypelessInlineContentItemsResolver.Create(resolver); _resolvers.Add(typelessResolver); return(this); }
/// <summary> /// Creates new instance of <see cref="TypelessInlineContentItemsResolver"/> for given <paramref name="resolver"/>. /// </summary> /// <typeparam name="TContentItem">Content item type the <paramref name="resolver"/> works with</typeparam> /// <param name="resolver">Resolver for specific content type of inline content item</param> public static ITypelessInlineContentItemsResolver Create <TContentItem>(IInlineContentItemsResolver <TContentItem> resolver) { if (resolver == null) { throw new ArgumentNullException(nameof(resolver)); } string Resolve(object item) => resolver.Resolve((TContentItem)item); return(new TypelessInlineContentItemsResolver(Resolve, typeof(TContentItem))); }
/// <summary> /// Inline content item processor, going through HTML and replacing content items marked as object elements with output of resolvers. /// </summary> /// <param name="defaultResolver">Resolver used in case no content type specific resolver was registered.</param> /// <param name="unretrievedInlineContentItemsResolver">Resolver whose output is used in case that value of inline content item was not retrieved from Delivery API.</param> public InlineContentItemsProcessor(IInlineContentItemsResolver <object> defaultResolver, IInlineContentItemsResolver <UnretrievedContentItem> unretrievedInlineContentItemsResolver) { DefaultResolver = defaultResolver; _typeResolver = new Dictionary <Type, Func <object, string> >(); _unretrievedInlineContentItemsResolver = unretrievedInlineContentItemsResolver; _htmlParser = new HtmlParser(); _strictHtmlParser = new HtmlParser(new HtmlParserOptions { IsStrictMode = true }); }
/// <summary> /// Inline content item processor, going through HTML and replacing content items marked as object elements with output of resolvers. /// </summary> /// <param name="defaultResolver">Resolver used in case no content type specific resolver was registered.</param> /// <param name="unretrievedInlineContentItemsResolver">Resolver whose output is used in case that value of inline content item was not retrieved from Delivery API.</param> public InlineContentItemsProcessor(IInlineContentItemsResolver <object> defaultResolver, IInlineContentItemsResolver <UnretrievedContentItem> unretrievedInlineContentItemsResolver) { DefaultResolver = defaultResolver; _typeResolver = new Dictionary <Type, Func <object, string> >(); _unretrievedInlineContentItemsResolver = unretrievedInlineContentItemsResolver; }
/// <summary> /// Function used for registering content type specific resolvers used during processing. /// </summary> /// <param name="resolver">Method which is used for specific content type as resolver.</param> /// <typeparam name="T">Content type which is resolver resolving.</typeparam> public void RegisterTypeResolver <T>(IInlineContentItemsResolver <T> resolver) { _typeResolver.Add(typeof(T), x => resolver.Resolve(new ResolvedContentItemData <T> { Item = (T)x })); }
/// <summary> /// Registers an <see cref="IInlineContentItemsResolver{T}"/> implementation For <seealso cref="InlineContentItemsProcessor"/> in <see cref="ServiceCollection"/>. /// </summary> /// <typeparam name="TContentItem">Type of content item that <paramref name="resolver"/> works with</typeparam> /// <param name="services">A <see cref="ServiceCollection"/> instance for registering and resolving dependencies.</param> /// <param name="resolver">An <see cref="IInlineContentItemsResolver{T}"/> instance capable of resolving <typeparamref name="TContentItem"/> to a <see cref="string"/></param> /// <returns>The <paramref name="services"/> instance with <see cref="IDeliveryClient"/> registered in it</returns> public static IServiceCollection AddDeliveryInlineContentItemsResolver <TContentItem>(this IServiceCollection services, IInlineContentItemsResolver <TContentItem> resolver) => services .AddSingleton(resolver) .AddSingleton(TypelessInlineContentItemsResolver.Create(resolver));
private DeliveryClientBuilderImplementation RegisterInlineContentItemsResolverOrThrow <TContentItem>(IInlineContentItemsResolver <TContentItem> inlineContentItemsResolver) { if (inlineContentItemsResolver == null) { throw new ArgumentNullException(nameof(inlineContentItemsResolver)); } _serviceCollection.AddDeliveryInlineContentItemsResolver(inlineContentItemsResolver); return(this); }
IOptionalClientSetup IOptionalClientSetup.WithInlineContentItemsResolver <T>(IInlineContentItemsResolver <T> inlineContentItemsResolver) => RegisterInlineContentItemsResolverOrThrow(inlineContentItemsResolver);
public static Kontent WithInlineItemResolver <TContentType>(this Kontent module, IInlineContentItemsResolver <TContentType> resolver) { module.ConfigureClientActions.Add(builder => builder.WithInlineContentItemsResolver(resolver)); return(module); }