diff --git a/src/Plaid/PlaidClient.cs b/src/Plaid/PlaidClient.cs index 641e9183..0bc896b4 100644 --- a/src/Plaid/PlaidClient.cs +++ b/src/Plaid/PlaidClient.cs @@ -115,6 +115,11 @@ public PlaidClient( /// Debug option to include the raw json in the returned DTO /// public bool ShowRawJson { get; set; } + + /// + /// Additional request headers used for all API calls. + /// + public Dictionary? AdditionalHeaders { get; set; } #endregion #region Private Members @@ -137,6 +142,10 @@ private ResponseParser PostAsync(string path, TRequest request) where }, Content = JsonContent.Create(request, options: JsonSerializerOptions), }; + + AddRequestHeaders(requestMessage, AdditionalHeaders); + AddRequestHeaders(requestMessage, request.AdditionalHeaders); + return new ResponseParser { Message = client.SendAsync(requestMessage), @@ -146,6 +155,17 @@ private ResponseParser PostAsync(string path, TRequest request) where }; } + private static void AddRequestHeaders(HttpRequestMessage requestMessage, Dictionary? headers) + { + if (headers != null) + { + foreach (var header in headers) + { + requestMessage.Headers.Add(header.Key, header.Value); + } + } + } + private readonly struct ResponseParser { public Task Message { get; init; } diff --git a/src/Plaid/RequestBase.cs b/src/Plaid/RequestBase.cs index b4d0ee6b..deaa3803 100644 --- a/src/Plaid/RequestBase.cs +++ b/src/Plaid/RequestBase.cs @@ -35,6 +35,12 @@ public abstract class RequestBase [JsonIgnore] public bool? ShowRawJson { get; set; } + /// + /// Pass additional request headers. + /// + [JsonIgnore] + public Dictionary? AdditionalHeaders { get; set; } + /// /// Indicates whether to include the AccessToken on an API call. ///