Ejemplo n.º 1
0
        public async Task <TransferItem> CreateTransferItem(CreateTransferItemParameters createTransferItemParameters)
        {
            var contentItemResponse = await AddContentItem(createTransferItemParameters);

            var variant = GetNewTransferLanguageVariant(createTransferItemParameters);

            await UpsertLanguageVariant(new UpsertLanguageVariantParameters
            {
                Codename = contentItemResponse.Codename,
                Variant  = variant,
            });

            var getKontentItemParameters = new GetKontentParameters
            {
                Codename = contentItemResponse.Codename
            };

            await PublishLanguageVariant(getKontentItemParameters);

            TransferItem?transferItem = default;

            var retryAttempts = settings.KenticoKontent.PublishLanguageVariantRetry;

            while (retryAttempts > 0)
            {
                try
                {
                    transferItem = await GetKontentItem <TransferItem>(getKontentItemParameters);
                }
                catch { }

                if (transferItem != default)
                {
                    return(transferItem);
                }

                await Task.Delay(1000);

                retryAttempts--;
            }

            throw new Exception($"Published language variant {contentItemResponse.Codename} but could not get it from Delivery.");
        }
Ejemplo n.º 2
0
        private async Task <ContentItemResponse> AddContentItem(CreateTransferItemParameters createTransferItemParameters)
        {
            var(name, _, _) = createTransferItemParameters;

            var requestUri = ConfigureClient();

            var request = new ContentItem
            {
                Name = name,
                Type = new Reference
                {
                    Codename = "transfer"
                }
            };

            var response = await PostAsJsonAsync(requestUri, request);

            return(await response.Content.ReadAsAsync <ContentItemResponse>());
        }
Ejemplo n.º 3
0
        private static LanguageVariant GetNewTransferLanguageVariant(CreateTransferItemParameters createTransferItemParameters)
        {
            var(_, customer, fields) = createTransferItemParameters;

            var variant = new LanguageVariant
            {
                Elements =
                {
                    new CustomElement
                    {
                        Element = new Reference
                        {
                            Codename = "info"
                        },
                        Value = CoreHelper.Serialize(new
                        {
                            customer
                        })
                    },
                    new RichTextElement
                    {
                        Element = new Reference
                        {
                            Codename = "fields"
                        }
                    }
                }
            };

            if (variant.Elements[1] is RichTextElement richTextElement)
            {
                var fieldHtmlBuilder = new StringBuilder();

                if (fields != default)
                {
                    foreach (var field in fields)
                    {
                        AbstractComponent?component = default;

                        switch (field.Type)
                        {
                        case Field.heading:
                            component = new HeadingComponent(field);
                            break;

                        case Field.write_text:
                            component = new WriteTextComponent(field);
                            break;

                        case Field.upload_file:
                            component = new UploadFileComponent(field);
                            break;

                        case Field.download_asset:
                            component = new DownloadAssetComponent(field);
                            break;
                        }

                        if (component != default)
                        {
                            fieldHtmlBuilder.Append($"<object type=\"application/kenticocloud\" data-type=\"component\" data-id=\"{component.Id}\"></object>");

                            richTextElement.Components.Add(component);
                        }
                    }
                }

                fieldHtmlBuilder.Append("<p><br/></p>");

                richTextElement.Value = fieldHtmlBuilder.ToString();
            }

            return(variant);
        }