Skip to content

Commit 19200fa

Browse files
authored
Merge pull request #34 from bunq/feature/isSessionActive#33
Feature/is session active#33
2 parents 0b5b73e + 1672043 commit 19200fa

File tree

2 files changed

+35
-9
lines changed

2 files changed

+35
-9
lines changed

BunqSdk/Context/ApiContext.cs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -176,19 +176,27 @@ private void DeleteSession()
176176
/// </summary>
177177
public void EnsureSessionActive()
178178
{
179-
if (SessionContext == null) return;
179+
if (!IsSessionActive())
180+
{
181+
ResetSession();
182+
}
183+
}
180184

185+
public bool IsSessionActive()
186+
{
187+
if (SessionContext == null)
188+
{
189+
return false;
190+
}
191+
181192
var timeToExpiry = SessionContext.ExpiryTime.Subtract(DateTime.Now);
182193
var timeToExpiryMinimum = new TimeSpan(
183194
TIME_UNIT_COUNT_NONE,
184195
TIME_UNIT_COUNT_NONE,
185196
TIME_TO_SESSION_EXPIRY_MINIMUM_SECONDS
186197
);
187198

188-
if (timeToExpiry < timeToExpiryMinimum)
189-
{
190-
ResetSession();
191-
}
199+
return timeToExpiry > timeToExpiryMinimum;
192200
}
193201

194202
/// <summary>

BunqSdk/Http/ApiClient.cs

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,20 @@ namespace Bunq.Sdk.Http
1616
{
1717
public class ApiClient
1818
{
19+
20+
/// <summary>
21+
/// Endpoints not requiring active session for the request to succeed.
22+
/// </summary>
23+
private const string DEVICE_SERVER_URL = "device-server";
24+
private const string INSTALLATION_URL = "installation";
25+
private const string SESSION_SERVER_URL = "session-server";
26+
private static readonly string[] URIS_NOT_REQUIRING_ACTIVE_SESSION = new string[]
27+
{
28+
DEVICE_SERVER_URL,
29+
INSTALLATION_URL,
30+
SESSION_SERVER_URL
31+
};
32+
1933
/// <summary>
2034
/// Header constants.
2135
/// </summary>
@@ -115,21 +129,25 @@ private BunqResponseRaw SendRequest(HttpMethod method, string uriRelative, byte[
115129
{
116130
var requestMessage = CreateHttpRequestMessage(method, uriRelative, uriParams, requestBodyBytes);
117131

118-
return SendRequest(requestMessage, customHeaders);
132+
return SendRequest(requestMessage, customHeaders, uriRelative);
119133
}
120134

121135
private BunqResponseRaw SendRequest(HttpMethod method, string uriRelative,
122136
IDictionary<string, string> uriParams, IDictionary<string, string> customHeaders)
123137
{
124138
var requestMessage = CreateHttpRequestMessage(method, uriRelative, uriParams);
125139

126-
return SendRequest(requestMessage, customHeaders);
140+
return SendRequest(requestMessage, customHeaders, uriRelative);
127141
}
128142

129143
private BunqResponseRaw SendRequest(HttpRequestMessage requestMessage,
130-
IDictionary<string, string> customHeaders)
144+
IDictionary<string, string> customHeaders, string uriRelative)
131145
{
132-
apiContext.EnsureSessionActive();
146+
if (!URIS_NOT_REQUIRING_ACTIVE_SESSION.Contains(uriRelative))
147+
{
148+
apiContext.EnsureSessionActive();
149+
}
150+
133151
SetDefaultHeaders(requestMessage);
134152
SetHeaders(requestMessage, customHeaders);
135153
SetSessionHeaders(requestMessage);

0 commit comments

Comments
 (0)