Skip to content

Commit

Permalink
Merge pull request #14 from RWS/develop
Browse files Browse the repository at this point in the history
Merging all latest 2.2 updates to release branch
  • Loading branch information
avmgan authored Jan 31, 2024
2 parents bf0a776 + 7dee328 commit 8c467bf
Show file tree
Hide file tree
Showing 39 changed files with 4,398 additions and 543 deletions.
9 changes: 7 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
SDL Dynamic Experience Delivery GraphQL client for .NET
===
- Develop: ![Build Status](https://github.com/sdl/graphql-client-dotnet/workflows/Build/badge.svg?branch=develop)
- 2.2: ![Build Status](https://github.com/sdl/graphql-client-dotnet/workflows/Build/badge.svg?branch=release/2.2)

Prerequisites
-------------
For building .NET you must have the following installed:
- Visual Studio 2019
- .NET Framework 4.6.2

Prerequisites
-------------
Expand Down Expand Up @@ -53,7 +58,7 @@ Of course, it is also possible (and appreciated) to report an issue without asso

License
-------
Copyright (c) 2014-2020 SDL Group.
Copyright (c) 2014-2021 SDL Group.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down
3 changes: 0 additions & 3 deletions _travis.yml

This file was deleted.

2 changes: 1 addition & 1 deletion net/BuildGraphQLModel.cmd
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
@echo off
msbuild sln\BuildGraphQLModel.sln
src\BuildGraphQLModel\bin\Debug\BuildGraphQLModel.exe -ns Sdl.Tridion.Api.Client.ContentModel -e http://localhost:8081/udp/content -o src\Sdl.Tridion.Api.Client\ContentModel\ContentModel.cs -f cs
src\BuildGraphQLModel\bin\Debug\BuildGraphQLModel.exe -ns Sdl.Tridion.Api.Client.ContentModel -e http://localhost:8081/cd/api -o src\Sdl.Tridion.Api.Client\ContentModel\ContentModel.cs -f cs
25 changes: 25 additions & 0 deletions net/sln/Sdl.Tridion.Api.Client.Tests.sln
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.32802.440
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sdl.Tridion.Api.Client.Tests", "..\src\Sdl.Tridion.Api.Client.Tests\Sdl.Tridion.Api.Client.Tests.csproj", "{28B0C39E-749E-4AED-87D6-84A78783D47F}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{28B0C39E-749E-4AED-87D6-84A78783D47F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{28B0C39E-749E-4AED-87D6-84A78783D47F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{28B0C39E-749E-4AED-87D6-84A78783D47F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{28B0C39E-749E-4AED-87D6-84A78783D47F}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {A8491C8F-ADA3-4779-B46F-044B6BAB646D}
EndGlobalSection
EndGlobal
1 change: 1 addition & 0 deletions net/src/Sdl.Tridion.Api.Client.Tests/MockGraphQLClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -44,5 +44,6 @@ public Task<GraphQLSchema> SchemaAsync()
}

public List<GraphQLError> LastErrors { get; }
public int RetryCount { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
}
}
25 changes: 25 additions & 0 deletions net/src/Sdl.Tridion.Api.Client.Tests/TestPublicContentApi.cs
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ public Task<GraphQLSchema> SchemaAsync()
}

public List<GraphQLError> LastErrors { get; }
public int RetryCount { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); }

private void ValidateRequest(IGraphQLRequest request)
{
Expand Down Expand Up @@ -122,6 +123,30 @@ public void TestGlobalContextData()

var client = CreateClient(new MockGraphQLClient(expected));

InputItemFilter filters = new InputItemFilter
{
ItemTypes = new List<FilterItemType> {FilterItemType.COMPONENT},
Schema = new InputSchemaCriteria { Id = 5309 },
PublicationIds = new List<int?> {14}
};

List<InputItemFilter> orList = new List<InputItemFilter>();
InputItemFilter inputItemFilterCustomMeta = new InputItemFilter();
inputItemFilterCustomMeta.CustomMeta = new InputCustomMetaCriteria { Key = "solutionCategory", Scope = CriteriaScope.Item, Value = "Hello" };
orList.Add(inputItemFilterCustomMeta);
filters.And = orList;

InputSortParam sort = new InputSortParam
{
Order = SortOrderType.Descending,
SortBy = SortFieldType.CUSTOM_META,
KeyType = SortKeyType.DATE,
Key = "dateSort"
};

client.ExecuteItemQuery(filters, sort, new Pagination() {First = 5}, null, ContentIncludeMode.Exclude, false, null);


client.GetBinaryComponent(ContentNamespace.Sites, 1, "/", null, claims);

client.GlobalContextData = claims;
Expand Down
101 changes: 101 additions & 0 deletions net/src/Sdl.Tridion.Api.Client/ApiClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,12 @@ public int Timeout
set { _client.Timeout = value; }
}

public int RetryCount
{
get { return _client.RetryCount; }
set { _client.RetryCount = value; }
}

public IHttpClient HttpClient
=> _client.HttpClient;

Expand Down Expand Up @@ -321,6 +327,101 @@ public List<TaxonomySitemapItem> GetSitemapSubtree(ContentNamespace ns, int publ
}
}

/// <summary>
/// Search by raw criteria
/// </summary>
/// <param name="rawCriteria">Raw criteria DSL generated by IqQuery API</param>
/// <param name="resultFilter">Result filter</param>
/// <param name="pagination">Pagination</param>
/// <returns>Search results</returns>
public FacetedSearchResults SearchByRawCriteria(string rawCriteria, InputResultFilter resultFilter, IPagination pagination)
{
try
{
var response =
_client.Execute<ContentQuery>(GraphQLRequests.SearchByRawCriteria(rawCriteria, resultFilter, pagination));
return response.TypedResponseData.Search;
}
catch (RuntimeBinderException e)
{
throw new ApiException(
$"Failed to get search results (rawCriteria:{rawCriteria})", e);
}
}

/// <summary>
/// Search by criteria
/// </summary>
/// <param name="inputCriteria"></param>
/// <param name="resultFilter"></param>
/// <param name="pagination"></param>
/// <returns></returns>
/// <exception cref="ApiException"></exception>
public FacetedSearchResults SearchByCriteria(InputCriteria inputCriteria, InputResultFilter resultFilter, IPagination pagination)
{
try
{
var response =
_client.Execute<ContentQuery>(GraphQLRequests.SearchByCriteria(inputCriteria, resultFilter, pagination));
return response.TypedResponseData.Search;
}
catch (RuntimeBinderException e)
{
throw new ApiException(
$"Failed to get search results (inputCriteria:{inputCriteria})", e);
}
}

/// <summary>
/// Faceted Search by criteria
/// </summary>
/// <param name="inputCriteria"></param>
/// <param name="inputFacets"></param>
/// <param name="resultFilter"></param>
/// <param name="pagination"></param>
/// <returns></returns>
/// <exception cref="ApiException"></exception>
public FacetedSearchResults FacetedSearch(InputCriteria inputCriteria, InputFacets inputFacets, string language, InputResultFilter resultFilter, IPagination pagination)
{
try
{
var response =
_client.Execute<ContentQuery>(GraphQLRequests.FacetedSearch(inputCriteria, inputFacets, language, resultFilter, pagination));
return response.TypedResponseData.Search;
}
catch (RuntimeBinderException e)
{
throw new ApiException(
$"Failed to get search results (inputCriteria:{inputCriteria})", e);
}
}

/// <summary>
/// Suggest - Filter results to match facets used within your content
/// </summary>
/// <param name="connectorId"></param>
/// <param name="label"></param>
/// <param name="language"></param>
/// <param name="fuzzy"></param>
/// <param name="used"></param>
/// <param name="pagination"></param>
/// <returns></returns>
/// <exception cref="ApiException"></exception>
public ConceptSuggestionConnection Suggest(string label, string language, bool fuzzy, bool used, string connectorId, IPagination pagination)
{
try
{
var response =
_client.Execute<ContentQuery>(GraphQLRequests.Suggest(label, language, fuzzy, used, connectorId, pagination));
return response.TypedResponseData.Suggest;
}
catch (RuntimeBinderException e)
{
throw new ApiException(
$"Failed to get search results (Suggest:{label})", e);
}
}

#endregion

#region IPublicContentApiAsync
Expand Down
Loading

0 comments on commit 8c467bf

Please sign in to comment.