public async void UpsertLanguageVariantWithElementBuilder() { // Remove next line in codesample var client = _fileSystemFixture.CreateMockClientWithResponse("ArticleLanguageVariantUpdatedResponse.json"); var itemIdentifier = Reference.ById(Guid.Parse("9539c671-d578-4fd3-aa5c-b2d8e486c9b8")); var languageIdentifier = Reference.ByCodename("en-US"); var identifier = new LanguageVariantIdentifier(itemIdentifier, languageIdentifier); // Elements to update var elements = ElementBuilder.GetElementsAsDynamic(new BaseElement[] { new TextElement() { // You can use `Reference.ById` if you don't have the model Element = Reference.ById(typeof(ArticleModel).GetProperty(nameof(ArticleModel.Title)).GetKontentElementId()), Value = "On Roasts - changed" }, new DateTimeElement() { // You can use `Reference.ById` if you don't have the model Element = Reference.ById(typeof(ArticleModel).GetProperty(nameof(ArticleModel.PostDate)).GetKontentElementId()), Value = new DateTime(2018, 7, 4) }, }); var upsertModel = new LanguageVariantUpsertModel() { Elements = elements }; // Upserts a language variant of a content item var response = await client.UpsertLanguageVariantAsync(identifier, upsertModel); }
public async void UsertVariant() { var client = _fileSystemFixture.CreateMockClientWithResponse("Empty.json"); var identifier = new LanguageVariantIdentifier(Reference.ByExternalId("123"), Reference.ByCodename("en-US")); var response = await client.UpsertLanguageVariantAsync(identifier, new LanguageVariantUpsertModel { Elements = ElementBuilder.GetElementsAsDynamic(new BaseElement[] { new TextElement { Element = Reference.ByCodename("title"), Value = "On Roasts" }, new LinkedItemsElement { Element = Reference.ByCodename("related_articles"), Value = new [] { Reference.ByExternalId("456"), } } }) }); }
public async void QuickStartAddLanguageVariant() { // Remove next line in codesample var client = _fileSystemFixture.CreateMockClientWithResponse("ArticleLanguageVariantResponse.json"); var componentId = "04bc8d32-97ab-431a-abaa-83102fc4c198"; var contentTypeCodename = "article"; var relatedArticle1Guid = Guid.Parse("b4e7bfaa-593c-4ae4-a231-5136b10757b8"); var relatedArticle2Guid = Guid.Parse("6d1c8ee9-76bc-474f-b09f-8a54a98f06ea"); var taxonomyTermGuid1 = Guid.Parse("5c060bf3-ed38-4c77-acfa-9868e6e2b5dd"); var taxonomyTermGuid2 = Guid.Parse("5c060bf3-ed38-4c77-acfa-9868e6e2b5dd"); // Defines the content elements to update var stronglyTypedElements = new ArticleModel { Title = new TextElement() { Value = "On Roasts" }, PostDate = new DateTimeElement() { Value = new DateTime(2017, 7, 4) }, BodyCopy = new RichTextElement { Value = $"<p>Rich Text</p><object type=\"application/kenticocloud\" data-type=\"component\" data-id=\"{componentId}\"></object>", Components = new ComponentModel[] { new ComponentModel { Id = Guid.Parse(componentId), Type = Reference.ByCodename(contentTypeCodename), Elements = new dynamic[] { new { element = new { id = typeof(ArticleModel).GetProperty(nameof(ArticleModel.Title)).GetKontentElementId() }, value = "Article component title", } } } } }, RelatedArticles = new LinkedItemsElement { Value = new[] { relatedArticle1Guid, relatedArticle2Guid }.Select(Reference.ById) }, Personas = new TaxonomyElement { Value = new[] { taxonomyTermGuid1, taxonomyTermGuid2 }.Select(Reference.ById) }, UrlPattern = new UrlSlugElement { Value = "on-roasts", Mode = "custom" }, }; // Specifies the content item and the language variant var itemIdentifier = Reference.ByCodename("on_roasts"); var languageIdentifier = Reference.ByCodename("en-US"); var identifier = new LanguageVariantIdentifier(itemIdentifier, languageIdentifier); // Upserts a language variant of your content item var response = await client.UpsertLanguageVariantAsync<ArticleModel>(identifier, stronglyTypedElements); }
public void BuildVariantsUrl_ItemExternalIdLanguageCodename_ReturnsCorrectUrl() { var itemIdentifier = Reference.ByExternalId("externalId"); var languageIdentifier = Reference.ByCodename("codename"); var identifier = new LanguageVariantIdentifier(itemIdentifier, languageIdentifier); var actualUrl = _builder.BuildVariantsUrl(identifier); var expectedUrl = $"{ENDPOINT}/projects/{PROJECT_ID}/items/external-id/{itemIdentifier.ExternalId}/variants/codename/{languageIdentifier.Codename}"; Assert.Equal(expectedUrl, actualUrl); }
public void BuildVariantsUrl_ItemCodenameLanguageId_ReturnsCorrectUrl() { var itemIdentifier = Reference.ByCodename("codename"); var languageIdentifier = Reference.ById(Guid.NewGuid()); var identifier = new LanguageVariantIdentifier(itemIdentifier, languageIdentifier); var actualUrl = _builder.BuildVariantsUrl(identifier); var expectedUrl = $"{ENDPOINT}/projects/{PROJECT_ID}/items/codename/{itemIdentifier.Codename}/variants/{languageIdentifier.Id}"; Assert.Equal(expectedUrl, actualUrl); }
/// <inheritdoc /> public async Task DeleteLanguageVariantAsync(LanguageVariantIdentifier identifier) { if (identifier == null) { throw new ArgumentNullException(nameof(identifier)); } var endpointUrl = _urlBuilder.BuildVariantsUrl(identifier); await _actionInvoker.InvokeMethodAsync(endpointUrl, HttpMethod.Delete); }
/// <inheritdoc /> public async Task ScheduleUnpublishingOfLanguageVariantAsync(LanguageVariantIdentifier identifier, ScheduleModel scheduleModel) { if (identifier == null) { throw new ArgumentNullException(nameof(identifier)); } var endpointUrl = _urlBuilder.BuildUnpublishVariantUrl(identifier); await _actionInvoker.InvokeMethodAsync(endpointUrl, HttpMethod.Put, scheduleModel); }
/// <inheritdoc /> public async Task CreateNewVersionOfLanguageVariantAsync(LanguageVariantIdentifier identifier) { if (identifier == null) { throw new ArgumentNullException(nameof(identifier)); } var endpointUrl = _urlBuilder.BuildNewVersionVariantUrl(identifier); await _actionInvoker.InvokeMethodAsync(endpointUrl, HttpMethod.Put); }
/// <inheritdoc /> public async Task <LanguageVariantModel <T> > GetLanguageVariantAsync <T>(LanguageVariantIdentifier identifier) where T : new() { if (identifier == null) { throw new ArgumentNullException(nameof(identifier)); } var endpointUrl = _urlBuilder.BuildVariantsUrl(identifier); var response = await _actionInvoker.InvokeReadOnlyMethodAsync <LanguageVariantModel>(endpointUrl, HttpMethod.Get); return(_modelProvider.GetLanguageVariantModel <T>(response)); }
public async void UpsertLanguageVariant() { var client = _fileSystemFixture.CreateMockClientWithResponse("Empty.json"); var identifier = new LanguageVariantIdentifier(Reference.ByExternalId("ext-cafe-brno"), Reference.ByCodename("en-US")); var response = await client.UpsertLanguageVariantAsync(identifier, new LanguageVariantUpsertModel { Elements = ElementBuilder.GetElementsAsDynamic(new BaseElement[] { new TextElement { Element = Reference.ByExternalId("street"), Value = "Nove Sady 25", }, new TextElement { Element = Reference.ByExternalId("city"), Value = "Brno", }, new TextElement { Element = Reference.ByExternalId("country"), Value = "Czech republic", }, new TextElement { Element = Reference.ByExternalId("state"), Value = "Jihomoravsky kraj", }, new TextElement { Element = Reference.ByExternalId("zip_code"), Value = "60200", }, new TextElement { Element = Reference.ByExternalId("phone"), Value = "+420 555 555 555", }, new TextElement { Element = Reference.ByExternalId("email"), Value = "*****@*****.**", }, }) }); }
/// <inheritdoc /> public async Task <LanguageVariantModel> UpsertLanguageVariantAsync(LanguageVariantIdentifier identifier, LanguageVariantModel languageVariant) { if (identifier == null) { throw new ArgumentNullException(nameof(identifier)); } if (languageVariant == null) { throw new ArgumentNullException(nameof(languageVariant)); } var languageVariantUpsertModel = new LanguageVariantUpsertModel(languageVariant); return(await UpsertLanguageVariantAsync(identifier, languageVariantUpsertModel)); }
/// <inheritdoc /> public async Task ChangeLanguageVariantWorkflowAsync(LanguageVariantIdentifier identifier, WorkflowStepIdentifier workflowStepIdentifier) { if (identifier == null) { throw new ArgumentNullException(nameof(identifier)); } if (workflowStepIdentifier == null) { throw new ArgumentNullException(nameof(workflowStepIdentifier)); } var endpointUrl = _urlBuilder.BuildWorkflowChangeUrl(identifier); await _actionInvoker.InvokeMethodAsync(endpointUrl, HttpMethod.Put, workflowStepIdentifier); }
/// <inheritdoc /> public async Task <LanguageVariantModel> UpsertLanguageVariantAsync(LanguageVariantIdentifier identifier, LanguageVariantUpsertModel languageVariantUpsertModel) { if (identifier == null) { throw new ArgumentNullException(nameof(identifier)); } if (languageVariantUpsertModel == null) { throw new ArgumentNullException(nameof(languageVariantUpsertModel)); } var endpointUrl = _urlBuilder.BuildVariantsUrl(identifier); var response = await _actionInvoker.InvokeMethodAsync <LanguageVariantUpsertModel, LanguageVariantModel>(endpointUrl, HttpMethod.Put, languageVariantUpsertModel); return(response); }
public async void RetrieveAndUpsertStronglyTypedModel() { // Remove next line in codesample var client = _fileSystemFixture.CreateMockClientWithResponse("ArticleLanguageVariantResponse.json"); var itemIdentifier = Reference.ById(Guid.Parse("9539c671-d578-4fd3-aa5c-b2d8e486c9b8")); var languageIdentifier = Reference.ByCodename("en-US"); var identifier = new LanguageVariantIdentifier(itemIdentifier, languageIdentifier); var response = await client.GetLanguageVariantAsync<ArticleModel>(identifier); response.Elements.Title = new TextElement() { Value = "On Roasts - changed" }; response.Elements.PostDate = new DateTimeElement() { Value = new DateTime(2018, 7, 4) }; // Remove next line in codesample client = _fileSystemFixture.CreateMockClientWithResponse("ArticleLanguageVariantUpdatedResponse.json"); var responseVariant = await client.UpsertLanguageVariantAsync(identifier, response.Elements); }
/// <inheritdoc /> public async Task <LanguageVariantModel <T> > UpsertLanguageVariantAsync <T>(LanguageVariantIdentifier identifier, T variantElements, WorkflowStepIdentifier workflow = null) where T : new() { if (identifier == null) { throw new ArgumentNullException(nameof(identifier)); } if (variantElements == null) { throw new ArgumentNullException(nameof(variantElements)); } var endpointUrl = _urlBuilder.BuildVariantsUrl(identifier); var variantUpsertModel = _modelProvider.GetLanguageVariantUpsertModel(variantElements, workflow); var response = await _actionInvoker.InvokeMethodAsync <LanguageVariantUpsertModel, LanguageVariantModel>(endpointUrl, HttpMethod.Put, variantUpsertModel); return(_modelProvider.GetLanguageVariantModel <T>(response)); }
public async void UseAssetRichText() { var client = _fileSystemFixture.CreateMockClientWithResponse("Empty.json"); var identifier = new LanguageVariantIdentifier(Reference.ByExternalId("new-cafes"), Reference.ByCodename("en-US")); var response = await client.UpsertLanguageVariantAsync(identifier, new LanguageVariantUpsertModel { Elements = ElementBuilder.GetElementsAsDynamic(new BaseElement[] { new RichTextElement { Element = Reference.ByCodename("body_copy"), Value = "<p>...</p> <figure data-asset-external-id=\"brno-cafe-image\"></figure>", } }) }); }
public async void UpsertStronglyTypedLanguageVariant() { // Remove next line in codesample var client = _fileSystemFixture.CreateMockClientWithResponse("ArticleLanguageVariantUpdatedResponse.json"); // Defines the content elements to update var stronglyTypedElements = new ArticleModel { Title = new TextElement() { Value = "On Roasts - changed" }, PostDate = new DateTimeElement() { Value = new DateTime(2018, 7, 4) }, }; // Specifies the content item and the language variant var itemIdentifier = Reference.ByCodename("on_roasts"); var languageIdentifier = Reference.ByCodename("en-US"); var identifier = new LanguageVariantIdentifier(itemIdentifier, languageIdentifier); // Upserts a language variant of a content item var response = await client.UpsertLanguageVariantAsync(identifier, stronglyTypedElements); }
public async void UseAsset() { var client = _fileSystemFixture.CreateMockClientWithResponse("Empty.json"); var identifier = new LanguageVariantIdentifier(Reference.ByExternalId("ext-cafe-brno"), Reference.ByCodename("en-US")); var response = await client.UpsertLanguageVariantAsync(identifier, new LanguageVariantUpsertModel { Elements = ElementBuilder.GetElementsAsDynamic(new BaseElement[] { new AssetElement { Element = Reference.ByCodename("photo"), Value = new[] { new AssetWithRenditionsReference(Reference.ByExternalId("brno-cafe-image")) } } }) }); }
public async void UpsertVariant() { var client = _fileSystemFixture.CreateMockClientWithResponse("Empty.json"); var identifier = new LanguageVariantIdentifier(Reference.ByExternalId("123"), Reference.ByCodename("en-US")); await client.UpsertLanguageVariantAsync(identifier, new LanguageVariantUpsertModel { Elements = ElementBuilder.GetElementsAsDynamic(new BaseElement[] { new RichTextElement { Element = Reference.ByExternalId("rich-text"), Value = "<h1>Lorem Ipsum</h1>\n<p>Lorem ipsum dolor sit amet, consectetur <a href=\"https://wikipedia.org\">adipiscing elit</a>, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>\n<object type=\"application/kenticocloud\" data-type=\"component\" data-id=\"a2ee7bac-15ff-4dce-a244-012b9f98dd7b\"></object>\n<p>Ut enim ad minim veniam, <a data-item-external-id=\"second-page\">quis nostrud</a> exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>\n<ul>\n <li>Lorem ipsum dolor sit amet</li>\n <li>Consectetur adipiscing elit</li>\n <li>Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua</li>\n</ul><figure data-asset-external-id=\"rich-text-asset\"></figure>", Components = new ComponentModel[] { new ComponentModel { Id = Guid.Parse("a2ee7bac-15ff-4dce-a244-012b9f98dd7b"), Type = Reference.ByExternalId("button"), Elements = ElementBuilder.GetElementsAsDynamic(new BaseElement[] { new TextElement { Element = Reference.ByExternalId("button-text"), Value = "Buy me", }, new TextElement { Element = Reference.ByExternalId("button-link"), Value = "https://kontent.a", } }) } } }, }), }); }
public string BuildUnpublishVariantUrl(LanguageVariantIdentifier identifier) => GetProjectUrl( string.Concat( _itemTemplate.GetIdentifierUrlSegment(identifier.ItemIdentifier), _variantTemplate.GetIdentifierUrlSegment(identifier.LanguageIdentifier), "/unpublish-and-archive"));
public string BuildCancelUnpublishingVariantUrl(LanguageVariantIdentifier identifier) => GetProjectUrl( string.Concat( _itemTemplate.GetIdentifierUrlSegment(identifier.ItemIdentifier), _variantTemplate.GetIdentifierUrlSegment(identifier.LanguageIdentifier), "/cancel-scheduled-unpublish"));
public string BuildNewVersionVariantUrl(LanguageVariantIdentifier identifier) => GetProjectUrl( string.Concat( _itemTemplate.GetIdentifierUrlSegment(identifier.ItemIdentifier), _variantTemplate.GetIdentifierUrlSegment(identifier.LanguageIdentifier), "/new-version"));
public string BuildVariantsUrl(LanguageVariantIdentifier identifier) => GetProjectUrl( string.Concat( _itemTemplate.GetIdentifierUrlSegment(identifier.ItemIdentifier), _variantTemplate.GetIdentifierUrlSegment(identifier.LanguageIdentifier)));
public string BuildWorkflowChangeUrl(LanguageVariantIdentifier identifier) => GetProjectUrl( string.Concat( _itemTemplate.GetIdentifierUrlSegment(identifier.ItemIdentifier), _variantTemplate.GetIdentifierUrlSegment(identifier.LanguageIdentifier), "/change-workflow"));