Skip to content

Commit f1852d2

Browse files
authored
Merge pull request #8 from bunq/feature/bunq/tinker_csharp#7_automatic_money_request
Request money on Sandbox if balance zero. (#7)
2 parents b58c844 + 4e43c9e commit f1852d2

File tree

1 file changed

+32
-1
lines changed

1 file changed

+32
-1
lines changed

TinkerSrc/Lib/BunqLib.cs

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Linq;
55
using System.Net.Http;
66
using System.Text.RegularExpressions;
7+
using System.Threading;
78
using Bunq.Sdk.Context;
89
using Bunq.Sdk.Exception;
910
using Bunq.Sdk.Http;
@@ -36,13 +37,23 @@ public class BunqLib
3637
/// </summary>
3738
private const string MonetaryAccountStatusActive = "ACTIVE";
3839
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;
3949

4050
private ApiEnvironmentType EnvironmentType { get; set; }
4151

4252
public BunqLib(ApiEnvironmentType environmentType)
4353
{
4454
EnvironmentType = environmentType;
4555
SetupContext();
56+
RequestSpendingMoneyIfNeeded();
4657
}
4758

4859
private void SetupContext(bool resetConfigIfNeeded = true)
@@ -214,13 +225,33 @@ private SandboxUser GenerateNewSandboxUser()
214225
httpClient.DefaultRequestHeaders.Add("X-Bunq-Region", "en_US");
215226
httpClient.DefaultRequestHeaders.Add("User-Agent", "hoi");
216227

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);
218229
requestTask.Wait();
219230

220231
var responseString = requestTask.Result.Content.ReadAsStringAsync().Result;
221232
var responseJson = BunqJsonConvert.DeserializeObject<JObject>(responseString);
222233
return BunqJsonConvert.DeserializeObject<SandboxUser>(responseJson.First.First.First.First.First
223234
.ToString());
224235
}
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+
}
225256
}
226257
}

0 commit comments

Comments
 (0)