-
Notifications
You must be signed in to change notification settings - Fork 123
Expand file tree
/
Copy pathHostConfiguration.cs
More file actions
164 lines (156 loc) · 10.2 KB
/
Copy pathHostConfiguration.cs
File metadata and controls
164 lines (156 loc) · 10.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
/*
* Transfer webhooks
*
* Adyen sends webhooks to inform your system about incoming and outgoing transfers in your platform. You can use these webhooks to build your implementation. For example, you can use this information to update balances in your own dashboards or to keep track of incoming funds.
*
* The version of the OpenAPI document: 4
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
#nullable enable
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
using System.Text.Json.Serialization;
using Microsoft.Extensions.DependencyInjection;
using Adyen.TransferWebhooks.Client;
using Adyen.TransferWebhooks.Models;
using Adyen.TransferWebhooks.Extensions;
using Adyen.Core;
using Adyen.Core.Auth;
using Adyen.Core.Client;
using Adyen.Core.Options;
using Adyen.Core.Converters;
namespace Adyen.TransferWebhooks.Client
{
/// <summary>
/// Provides hosting configuration for TransferWebhooks
/// </summary>
public class HostConfiguration
{
private readonly IServiceCollection _services;
private readonly JsonSerializerOptions _jsonOptions = new JsonSerializerOptions();
private readonly AdyenOptions _adyenOptions = new AdyenOptions();
/// <summary>
/// Instantiates the HostConfiguration (custom JsonConverters, Events, HttpClient) with the necessary dependencies to communicate with the API.
/// </summary>
/// <param name="services"><see cref="IServiceCollection"/></param>
public HostConfiguration(IServiceCollection services)
{
_services = services;
if (_jsonOptions.Converters.FirstOrDefault(x => x.GetType() == typeof(JsonStringEnumConverter)) == null)
_jsonOptions.Converters.Add(new JsonStringEnumConverter());
if (_jsonOptions.Converters.FirstOrDefault(x => x.GetType() == typeof(DateTimeJsonConverter)) == null)
_jsonOptions.Converters.Add(new DateTimeJsonConverter());
if (_jsonOptions.Converters.FirstOrDefault(x => x.GetType() == typeof(DateTimeNullableJsonConverter)) == null)
_jsonOptions.Converters.Add(new DateTimeNullableJsonConverter());
if (_jsonOptions.Converters.FirstOrDefault(x => x.GetType() == typeof(ByteArrayConverter)) == null)
_jsonOptions.Converters.Add(new ByteArrayConverter());
if (_jsonOptions.Converters.FirstOrDefault(x => x.GetType() == typeof(DateOnlyJsonConverter)) == null)
_jsonOptions.Converters.Add(new DateOnlyJsonConverter());
if (_jsonOptions.Converters.FirstOrDefault(x => x.GetType() == typeof(DateOnlyNullableJsonConverter)) == null)
_jsonOptions.Converters.Add(new DateOnlyNullableJsonConverter());
_jsonOptions.Converters.Add(new AULocalAccountIdentificationJsonConverter());
_jsonOptions.Converters.Add(new AdditionalBankIdentificationJsonConverter());
_jsonOptions.Converters.Add(new AddressJsonConverter());
_jsonOptions.Converters.Add(new AirlineJsonConverter());
_jsonOptions.Converters.Add(new AmountJsonConverter());
_jsonOptions.Converters.Add(new AmountAdjustmentJsonConverter());
_jsonOptions.Converters.Add(new BRLocalAccountIdentificationJsonConverter());
_jsonOptions.Converters.Add(new BalanceMutationJsonConverter());
_jsonOptions.Converters.Add(new BalancePlatformNotificationResponseJsonConverter());
_jsonOptions.Converters.Add(new BankAccountV3JsonConverter());
_jsonOptions.Converters.Add(new BankAccountV3AccountIdentificationJsonConverter());
_jsonOptions.Converters.Add(new BankCategoryDataJsonConverter());
_jsonOptions.Converters.Add(new CALocalAccountIdentificationJsonConverter());
_jsonOptions.Converters.Add(new CZLocalAccountIdentificationJsonConverter());
_jsonOptions.Converters.Add(new CardJsonConverter());
_jsonOptions.Converters.Add(new CardIdentificationJsonConverter());
_jsonOptions.Converters.Add(new ConfirmationTrackingDataJsonConverter());
_jsonOptions.Converters.Add(new CounterpartyV3JsonConverter());
_jsonOptions.Converters.Add(new DKLocalAccountIdentificationJsonConverter());
_jsonOptions.Converters.Add(new DirectDebitInformationJsonConverter());
_jsonOptions.Converters.Add(new EstimationTrackingDataJsonConverter());
_jsonOptions.Converters.Add(new ExecutionDateJsonConverter());
_jsonOptions.Converters.Add(new ExternalReasonJsonConverter());
_jsonOptions.Converters.Add(new FundingInstrumentJsonConverter());
_jsonOptions.Converters.Add(new HKLocalAccountIdentificationJsonConverter());
_jsonOptions.Converters.Add(new HULocalAccountIdentificationJsonConverter());
_jsonOptions.Converters.Add(new IbanAccountIdentificationJsonConverter());
_jsonOptions.Converters.Add(new InterchangeDataJsonConverter());
_jsonOptions.Converters.Add(new InternalCategoryDataJsonConverter());
_jsonOptions.Converters.Add(new InternalReviewTrackingDataJsonConverter());
_jsonOptions.Converters.Add(new IssuedCardJsonConverter());
_jsonOptions.Converters.Add(new IssuingTransactionDataJsonConverter());
_jsonOptions.Converters.Add(new LegJsonConverter());
_jsonOptions.Converters.Add(new LodgingJsonConverter());
_jsonOptions.Converters.Add(new MerchantDataJsonConverter());
_jsonOptions.Converters.Add(new MerchantPurchaseDataJsonConverter());
_jsonOptions.Converters.Add(new ModificationJsonConverter());
_jsonOptions.Converters.Add(new NOLocalAccountIdentificationJsonConverter());
_jsonOptions.Converters.Add(new NZLocalAccountIdentificationJsonConverter());
_jsonOptions.Converters.Add(new NameLocationJsonConverter());
_jsonOptions.Converters.Add(new NetworkReasonJsonConverter());
_jsonOptions.Converters.Add(new NumberAndBicAccountIdentificationJsonConverter());
_jsonOptions.Converters.Add(new PLLocalAccountIdentificationJsonConverter());
_jsonOptions.Converters.Add(new PartyIdentificationJsonConverter());
_jsonOptions.Converters.Add(new PaymentInstrumentJsonConverter());
_jsonOptions.Converters.Add(new PlatformPaymentJsonConverter());
_jsonOptions.Converters.Add(new RelayedAuthorisationDataJsonConverter());
_jsonOptions.Converters.Add(new ResourceJsonConverter());
_jsonOptions.Converters.Add(new ResourceReferenceJsonConverter());
_jsonOptions.Converters.Add(new SELocalAccountIdentificationJsonConverter());
_jsonOptions.Converters.Add(new SGLocalAccountIdentificationJsonConverter());
_jsonOptions.Converters.Add(new ThreeDSecureJsonConverter());
_jsonOptions.Converters.Add(new TransactionEventViolationJsonConverter());
_jsonOptions.Converters.Add(new TransactionRuleReferenceJsonConverter());
_jsonOptions.Converters.Add(new TransactionRuleSourceJsonConverter());
_jsonOptions.Converters.Add(new TransactionRulesResultJsonConverter());
_jsonOptions.Converters.Add(new TransferDataJsonConverter());
_jsonOptions.Converters.Add(new TransferDataCategoryDataJsonConverter());
_jsonOptions.Converters.Add(new TransferDataTracingJsonConverter());
_jsonOptions.Converters.Add(new TransferDataTrackingJsonConverter());
_jsonOptions.Converters.Add(new TransferEventJsonConverter());
_jsonOptions.Converters.Add(new TransferEventEventsDataInnerJsonConverter());
_jsonOptions.Converters.Add(new TransferEventTracingDataJsonConverter());
_jsonOptions.Converters.Add(new TransferEventTrackingDataJsonConverter());
_jsonOptions.Converters.Add(new TransferNotificationCounterPartyJsonConverter());
_jsonOptions.Converters.Add(new TransferNotificationMerchantDataJsonConverter());
_jsonOptions.Converters.Add(new TransferNotificationRequestJsonConverter());
_jsonOptions.Converters.Add(new TransferNotificationValidationFactJsonConverter());
_jsonOptions.Converters.Add(new TransferReviewJsonConverter());
_jsonOptions.Converters.Add(new UKFpsTracingDataJsonConverter());
_jsonOptions.Converters.Add(new UKLocalAccountIdentificationJsonConverter());
_jsonOptions.Converters.Add(new USAchTracingDataJsonConverter());
_jsonOptions.Converters.Add(new USLocalAccountIdentificationJsonConverter());
_jsonOptions.Converters.Add(new UltimatePartyIdentificationJsonConverter());
JsonSerializerOptionsProvider jsonSerializerOptionsProvider = new(_jsonOptions);
_services.AddSingleton(jsonSerializerOptionsProvider);
}
/// <summary>
/// Configures the <see cref="JsonSerializerOptions"/>.
/// </summary>
/// <param name="jsonSerializerOptions">Configures the <see cref="JsonSerializerOptions"/>.</param>
/// <returns><see cref="HostConfiguration"/>.</returns>
public HostConfiguration ConfigureJsonOptions(Action<JsonSerializerOptions> jsonSerializerOptions)
{
jsonSerializerOptions(_jsonOptions);
return this;
}
/// <summary>
/// Configures the <see cref="AdyenOptions"/> (e.g. Environment, LiveEndpointPrefix, <see cref="ITokenProvider{ApiKeyToken}"/>).
/// </summary>
/// <param name="adyenOptions">Configures the <see cref="AdyenOptions"/>.</param>
/// <returns><see cref="HostConfiguration"/>.</returns>
public HostConfiguration ConfigureAdyenOptions(Action<AdyenOptions> adyenOptions)
{
adyenOptions(_adyenOptions);
_services.AddSingleton(new AdyenOptionsProvider(_adyenOptions));
_services.AddSingleton<ITokenProvider<HmacKeyToken>>(new TokenProvider<HmacKeyToken>(new HmacKeyToken(_adyenOptions.AdyenHmacKey)));
return this;
}
}
}