Skip to content

Commit 9230e5d

Browse files
committed
Implement retry mechanizm using user/pass
1 parent 4708eeb commit 9230e5d

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

src/PeerBerry.API/PeerBerryClient.cs

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ private async Task AuthenticateAsync(string accessToken, string refreshToken)
137137
_userPublicId = profile.publicId;
138138
}
139139

140-
static private bool _wasRetry = false;
140+
static private bool _wasRetryWithToken = false, _wasRetryWithUser = false;
141141

142142
private async Task<T?> SendRequest<T>(HttpMethod method, string url, bool isAuthorized, object? body = null)
143143
{
@@ -148,13 +148,22 @@ private async Task AuthenticateAsync(string accessToken, string refreshToken)
148148
}
149149
catch (UnauthorizedAccessException)
150150
{
151-
if (_wasRetry)
152-
throw;
153151
//Refresh mechanism
154-
_wasRetry = true;
155-
var refresh = await RefreshTokenAsync(_accessToken, _refreshToken);
156-
await InitializeUsingTokensAsync(refresh.access_token, refresh.refresh_token);
157-
goto start;
152+
if (!_wasRetryWithToken)
153+
{
154+
_wasRetryWithToken = true;
155+
var refresh = await RefreshTokenAsync(_accessToken, _refreshToken);
156+
await InitializeUsingTokensAsync(refresh.access_token, refresh.refresh_token);
157+
goto start;
158+
}
159+
else if(!_wasRetryWithUser)
160+
{
161+
_wasRetryWithToken = true;
162+
var login = await LoginAsync(_email, _password);
163+
await InitializeUsingTokensAsync(login.access_token, login.refresh_token);
164+
goto start;
165+
}
166+
throw;
158167
}
159168
}
160169

0 commit comments

Comments
 (0)