|
4 | 4 | using System.Linq; |
5 | 5 | using System.Net.Http; |
6 | 6 | using System.Text.RegularExpressions; |
| 7 | +using System.Threading; |
7 | 8 | using Bunq.Sdk.Context; |
8 | 9 | using Bunq.Sdk.Exception; |
9 | 10 | using Bunq.Sdk.Http; |
@@ -36,13 +37,23 @@ public class BunqLib |
36 | 37 | /// </summary> |
37 | 38 | private const string MonetaryAccountStatusActive = "ACTIVE"; |
38 | 39 | private const string AliasTypeIban = "IBAN"; |
| 40 | + private const string AliasTypeEmail = "EMAIL"; |
| 41 | + private const string CurrencyEur = "EUR"; |
| 42 | + |
| 43 | + private const string RequestSpendingMoneyAmount = "500.0"; |
| 44 | + private const string RequestSpendingMoneyRecipient = "sugardaddy@bunq.com"; |
| 45 | + private const string RequestSpendingMoneyDescription = "Requesting some spending money."; |
| 46 | + private const int RequestSpendingMoneyWaitTimeMilliseconds = 1000; |
| 47 | + |
| 48 | + private const double BalanceZero = 0.0; |
39 | 49 |
|
40 | 50 | private ApiEnvironmentType EnvironmentType { get; set; } |
41 | 51 |
|
42 | 52 | public BunqLib(ApiEnvironmentType environmentType) |
43 | 53 | { |
44 | 54 | EnvironmentType = environmentType; |
45 | 55 | SetupContext(); |
| 56 | + RequestSpendingMoneyIfNeeded(); |
46 | 57 | } |
47 | 58 |
|
48 | 59 | private void SetupContext(bool resetConfigIfNeeded = true) |
@@ -214,13 +225,33 @@ private SandboxUser GenerateNewSandboxUser() |
214 | 225 | httpClient.DefaultRequestHeaders.Add("X-Bunq-Region", "en_US"); |
215 | 226 | httpClient.DefaultRequestHeaders.Add("User-Agent", "hoi"); |
216 | 227 |
|
217 | | - var requestTask = httpClient.PostAsync("https://sandbox.public.api.bunq.com/v1/sandbox-user", null); |
| 228 | + var requestTask = httpClient.PostAsync(ApiEnvironmentType.SANDBOX.BaseUri + "sandbox-user", null); |
218 | 229 | requestTask.Wait(); |
219 | 230 |
|
220 | 231 | var responseString = requestTask.Result.Content.ReadAsStringAsync().Result; |
221 | 232 | var responseJson = BunqJsonConvert.DeserializeObject<JObject>(responseString); |
222 | 233 | return BunqJsonConvert.DeserializeObject<SandboxUser>(responseJson.First.First.First.First.First |
223 | 234 | .ToString()); |
224 | 235 | } |
| 236 | + |
| 237 | + private void RequestSpendingMoneyIfNeeded() |
| 238 | + { |
| 239 | + if (ShouldRequestSpendingMoney()) |
| 240 | + { |
| 241 | + RequestInquiry.Create( |
| 242 | + new Amount(RequestSpendingMoneyAmount, CurrencyEur), |
| 243 | + new Pointer(AliasTypeEmail, RequestSpendingMoneyRecipient), |
| 244 | + RequestSpendingMoneyDescription, |
| 245 | + false |
| 246 | + ); |
| 247 | + Thread.Sleep(RequestSpendingMoneyWaitTimeMilliseconds); |
| 248 | + } |
| 249 | + } |
| 250 | + |
| 251 | + private bool ShouldRequestSpendingMoney() |
| 252 | + { |
| 253 | + return ApiEnvironmentType.SANDBOX.Equals(EnvironmentType) |
| 254 | + && double.Parse(BunqContext.UserContext.PrimaryMonetaryAccountBank.Balance.Value) <= BalanceZero; |
| 255 | + } |
225 | 256 | } |
226 | 257 | } |
0 commit comments