Пример #1
0
    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);
    }
Пример #2
0
    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"),
                    }
                }
            })
        });
    }
Пример #3
0
    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);
    }
Пример #4
0
    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);
    }
Пример #5
0
    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);
    }
Пример #6
0
    /// <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);
    }
Пример #7
0
    /// <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);
    }
Пример #8
0
    /// <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);
    }
Пример #9
0
    /// <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));
    }
Пример #10
0
    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   = "*****@*****.**",
                },
            })
        });
    }
Пример #11
0
    /// <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));
    }
Пример #12
0
    /// <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);
    }
Пример #13
0
    /// <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);
    }
Пример #14
0
    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);
    }
Пример #15
0
    /// <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));
    }
Пример #16
0
    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>",
                }
            })
        });
    }
Пример #17
0
    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);
    }
Пример #18
0
    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"))
                    }
                }
            })
        });
    }
Пример #19
0
    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",
                                }
                            })
                        }
                    }
                },
            }),
        });
    }
Пример #20
0
 public string BuildUnpublishVariantUrl(LanguageVariantIdentifier identifier) => GetProjectUrl(
     string.Concat(
         _itemTemplate.GetIdentifierUrlSegment(identifier.ItemIdentifier),
         _variantTemplate.GetIdentifierUrlSegment(identifier.LanguageIdentifier),
         "/unpublish-and-archive"));
Пример #21
0
 public string BuildCancelUnpublishingVariantUrl(LanguageVariantIdentifier identifier) => GetProjectUrl(
     string.Concat(
         _itemTemplate.GetIdentifierUrlSegment(identifier.ItemIdentifier),
         _variantTemplate.GetIdentifierUrlSegment(identifier.LanguageIdentifier),
         "/cancel-scheduled-unpublish"));
Пример #22
0
 public string BuildNewVersionVariantUrl(LanguageVariantIdentifier identifier) => GetProjectUrl(
     string.Concat(
         _itemTemplate.GetIdentifierUrlSegment(identifier.ItemIdentifier),
         _variantTemplate.GetIdentifierUrlSegment(identifier.LanguageIdentifier),
         "/new-version"));
Пример #23
0
 public string BuildVariantsUrl(LanguageVariantIdentifier identifier) => GetProjectUrl(
     string.Concat(
         _itemTemplate.GetIdentifierUrlSegment(identifier.ItemIdentifier),
         _variantTemplate.GetIdentifierUrlSegment(identifier.LanguageIdentifier)));
Пример #24
0
 public string BuildWorkflowChangeUrl(LanguageVariantIdentifier identifier) => GetProjectUrl(
     string.Concat(
         _itemTemplate.GetIdentifierUrlSegment(identifier.ItemIdentifier),
         _variantTemplate.GetIdentifierUrlSegment(identifier.LanguageIdentifier),
         "/change-workflow"));