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."); }
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>()); }
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); }