Пример #1
0
        private InlineContentItemsProcessorFactory AndResolver <TContentItem>(IInlineContentItemsResolver <TContentItem> resolver)
        {
            var typelessResolver = TypelessInlineContentItemsResolver.Create(resolver);

            _resolvers.Add(typelessResolver);

            return(this);
        }
Пример #2
0
        /// <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));
Пример #7
0
        private DeliveryClientBuilderImplementation RegisterInlineContentItemsResolverOrThrow <TContentItem>(IInlineContentItemsResolver <TContentItem> inlineContentItemsResolver)
        {
            if (inlineContentItemsResolver == null)
            {
                throw new ArgumentNullException(nameof(inlineContentItemsResolver));
            }

            _serviceCollection.AddDeliveryInlineContentItemsResolver(inlineContentItemsResolver);

            return(this);
        }
Пример #8
0
 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);
 }