Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -374,3 +374,4 @@ FodyWeavers.xsd
/Tests.Contentful/appsettings.json
/Tests.Contentful/TestFiles/Input/Product Acceleration_en-US-en_us-de-QC-C.html
/Tests.Contentful/appsettings.json
/Tests.Contentful/appsettings.json
20 changes: 10 additions & 10 deletions Apps.Contentful/Actions/EntryActions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -108,16 +108,6 @@ await client.Paginate<Entry<object>>(
entries = entries.Where(e => e.SystemProperties.PublishedVersion.HasValue == false);
}

if (request.Tags is not null && request.Tags.Any())
{
entries = entries.Where(e => e.Metadata.Tags.Any(t => request.Tags.Contains(t.Sys.Id)));
}

if (request.ExcludeTags is not null && request.ExcludeTags.Any())
{
entries = entries.Where(e => e.Metadata.Tags.All(t => !request.ExcludeTags.Contains(t.Sys.Id)));
}

var entriesResponse = entries.Select(e => new EntryEntity(e)).ToArray();
return new ListEntriesResponse(entriesResponse, entriesResponse.Length);
}
Expand Down Expand Up @@ -1234,6 +1224,16 @@ private static void ApplyListEntriesRequestFilters(NameValueCollection queryStri
{
queryString.Add("query", request.SearchTerm);
}

if (request.Tags is not null && request.Tags.Any())
{
queryString.Add("metadata.tags.sys.id[in]", string.Join(",", request.Tags));
}

if (request.ExcludeTags is not null && request.ExcludeTags.Any())
{
queryString.Add("metadata.tags.sys.id[nin]", string.Join(",", request.ExcludeTags));
}
}

private IEnumerable<string> ExtractReferencedIds(
Expand Down
2 changes: 1 addition & 1 deletion Apps.Contentful/Apps.Contentful.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<Nullable>enable</Nullable>
<Product>Contentful</Product>
<Description>The headless content management system</Description>
<Version>1.8.11</Version>
<Version>1.8.12</Version>
<AssemblyName>Apps.Contentful</AssemblyName>
</PropertyGroup>

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ Follow [this guide](https://www.contentful.com/help/working-with-translations/)

### Entries

- **Search entries** returns a list of entries. Optionally filter by content model, environment, tags and the last updated date.
- **Search entries** returns a list of entries. Optionally filter by content model, environment, tags, excluded tags and the last updated date.
- **Search refereced entries** returns a list of all entries that are referenced by the specified entry.
- **Search links to entry** returns a list of all entries that link to the specified entry.
- **Find entry by field value** Given a field and a desired value for the field, the first matching entry will be returned.
Expand Down
5 changes: 2 additions & 3 deletions Tests.Contentful/EntryActionsTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,7 @@ public async Task ListEntries_WithValidPublishedDateFilters_ShouldReturnFiltered
var entryActions = new EntryActions(InvocationContext, FileManager);
var listEntriesRequest = new ListEntriesRequest
{
PublishedAfter = new DateTime(2025, 10, 01),
PublishedBefore = new DateTime(2025, 10, 04)
Tags = ["danDemo"],
};

// Act
Expand All @@ -56,7 +55,7 @@ public async Task ListEntries_WithValidPublishedDateFilters_ShouldReturnFiltered
// Assert
foreach (var entry in result.Entries)
{
Console.WriteLine($"{entry.ContentId}");
Console.WriteLine($"Id: {entry.ContentId} - Name: {entry.ContentTypeId}");
}
IsNotNull(result);
}
Expand Down
3 changes: 3 additions & 0 deletions Tests.Contentful/Tests.Contentful.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@
<None Update="appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="appsettings.json.example">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
Expand Down