From a12dc4e5334d401e70732b7ec74d2480beb35921 Mon Sep 17 00:00:00 2001 From: Asimakis Ant Date: Tue, 19 May 2026 13:58:13 +0200 Subject: [PATCH] NXC-244: Forward custom header to nested services --- src/Nexus.Crypto.SDK/NexusAPIService.cs | 19 +++++++++++++------ src/Nexus.Crypto.SDK/Services/BaseService.cs | 4 ++-- .../Services/CustomerService.cs | 2 +- .../Services/DocumentStoreRecordService.cs | 2 +- .../Services/DocumentStoreSettingsService.cs | 2 +- .../Services/DocumentStoreTypeService.cs | 2 +- 6 files changed, 19 insertions(+), 12 deletions(-) diff --git a/src/Nexus.Crypto.SDK/NexusAPIService.cs b/src/Nexus.Crypto.SDK/NexusAPIService.cs index 604fa9e..c65b8a0 100644 --- a/src/Nexus.Crypto.SDK/NexusAPIService.cs +++ b/src/Nexus.Crypto.SDK/NexusAPIService.cs @@ -7,13 +7,20 @@ namespace Nexus.Crypto.SDK; -public class NexusAPIService(INexusApiClientFactory nexusApiClientFactory) - : BaseService(nexusApiClientFactory), INexusBrokerAPIService, INexusCustodianAPIService +public class NexusAPIService : BaseService, INexusBrokerAPIService, INexusCustodianAPIService { - public IDocumentStoreSettingsService DocumentStoreSettings { get; } = new DocumentStoreSettingsService(nexusApiClientFactory); - public IDocumentStoreTypeService DocumentStoreType { get; } = new DocumentStoreTypeService(nexusApiClientFactory); - public IDocumentStoreRecordService DocumentStoreRecord { get; } = new DocumentStoreRecordService(nexusApiClientFactory); - public ICustomerService Customer { get; } = new CustomerService(nexusApiClientFactory); + public NexusAPIService(INexusApiClientFactory nexusApiClientFactory) : base(nexusApiClientFactory) + { + DocumentStoreSettings = new DocumentStoreSettingsService(nexusApiClientFactory, _headers); + DocumentStoreType = new DocumentStoreTypeService(nexusApiClientFactory, _headers); + DocumentStoreRecord = new DocumentStoreRecordService(nexusApiClientFactory, _headers); + Customer = new CustomerService(nexusApiClientFactory, _headers); + } + + public IDocumentStoreSettingsService DocumentStoreSettings { get; } + public IDocumentStoreTypeService DocumentStoreType { get; } + public IDocumentStoreRecordService DocumentStoreRecord { get; } + public ICustomerService Customer { get; } public NexusAPIService AddHeader(string key, string value) { diff --git a/src/Nexus.Crypto.SDK/Services/BaseService.cs b/src/Nexus.Crypto.SDK/Services/BaseService.cs index 1208d42..a69c6b1 100644 --- a/src/Nexus.Crypto.SDK/Services/BaseService.cs +++ b/src/Nexus.Crypto.SDK/Services/BaseService.cs @@ -6,11 +6,11 @@ namespace Nexus.Crypto.SDK.Services; -public class BaseService(INexusApiClientFactory nexusApiClientFactory): IHttpService +public class BaseService(INexusApiClientFactory nexusApiClientFactory, Dictionary? headers = null): IHttpService { protected const string ISO8601DateTimeFormat = "yyyy-MM-ddTHH:mm:ssZ"; protected const string ApiVersion = "1.2"; - protected readonly Dictionary _headers = []; + protected readonly Dictionary _headers = headers ?? []; protected readonly JsonSerializerOptions _serializerOptions = new() { diff --git a/src/Nexus.Crypto.SDK/Services/CustomerService.cs b/src/Nexus.Crypto.SDK/Services/CustomerService.cs index ac66367..8063e05 100644 --- a/src/Nexus.Crypto.SDK/Services/CustomerService.cs +++ b/src/Nexus.Crypto.SDK/Services/CustomerService.cs @@ -3,7 +3,7 @@ namespace Nexus.Crypto.SDK.Services; -public class CustomerService(INexusApiClientFactory nexusApiClientFactory) :BaseService(nexusApiClientFactory), ICustomerService +public class CustomerService(INexusApiClientFactory nexusApiClientFactory, Dictionary? headers = null) :BaseService(nexusApiClientFactory, headers), ICustomerService { public Task> GetCustomerTraceSummary(string customerCode, DateTime startDate) diff --git a/src/Nexus.Crypto.SDK/Services/DocumentStoreRecordService.cs b/src/Nexus.Crypto.SDK/Services/DocumentStoreRecordService.cs index af7d48a..5046efa 100644 --- a/src/Nexus.Crypto.SDK/Services/DocumentStoreRecordService.cs +++ b/src/Nexus.Crypto.SDK/Services/DocumentStoreRecordService.cs @@ -3,7 +3,7 @@ namespace Nexus.Crypto.SDK.Services; -public class DocumentStoreRecordService(INexusApiClientFactory nexusApiClientFactory) : BaseService(nexusApiClientFactory), IDocumentStoreRecordService +public class DocumentStoreRecordService(INexusApiClientFactory nexusApiClientFactory, Dictionary? headers = null) : BaseService(nexusApiClientFactory, headers), IDocumentStoreRecordService { private const string DocumentStoreRecordUrl = "integrations/documentstore/file"; private const string DocumentStoreRecordListUrl = "integrations/documentstore/list"; diff --git a/src/Nexus.Crypto.SDK/Services/DocumentStoreSettingsService.cs b/src/Nexus.Crypto.SDK/Services/DocumentStoreSettingsService.cs index da3833c..6b66398 100644 --- a/src/Nexus.Crypto.SDK/Services/DocumentStoreSettingsService.cs +++ b/src/Nexus.Crypto.SDK/Services/DocumentStoreSettingsService.cs @@ -3,7 +3,7 @@ namespace Nexus.Crypto.SDK.Services; -public class DocumentStoreSettingsService(INexusApiClientFactory nexusApiClientFactory): BaseService(nexusApiClientFactory), IDocumentStoreSettingsService +public class DocumentStoreSettingsService(INexusApiClientFactory nexusApiClientFactory, Dictionary? headers = null): BaseService(nexusApiClientFactory, headers), IDocumentStoreSettingsService { private const string documentStoreUrl = "integrations/documentstore"; /// diff --git a/src/Nexus.Crypto.SDK/Services/DocumentStoreTypeService.cs b/src/Nexus.Crypto.SDK/Services/DocumentStoreTypeService.cs index f92fda9..d742177 100644 --- a/src/Nexus.Crypto.SDK/Services/DocumentStoreTypeService.cs +++ b/src/Nexus.Crypto.SDK/Services/DocumentStoreTypeService.cs @@ -3,7 +3,7 @@ namespace Nexus.Crypto.SDK.Services; -public class DocumentStoreTypeService(INexusApiClientFactory nexusApiClientFactory) : BaseService(nexusApiClientFactory), IDocumentStoreTypeService +public class DocumentStoreTypeService(INexusApiClientFactory nexusApiClientFactory, Dictionary? headers = null) : BaseService(nexusApiClientFactory, headers), IDocumentStoreTypeService { private const string DocumentTypeUrl = "integrations/documentstore/type"; public Task> Create(DocumentStoreTypeCreateRequest request)