private async Task<TokenResponseDto> RefreshTokenAsync(TokenResponseDto dto) { var policy = GetRetryPolicy(); return await policy.ExecuteAsync(async () => { var client = new RestClient("https://api.netatmo.com"); var request = new RestRequest("/oauth2/token"); request.AddHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8"); request.AddParameter("grant_type", dto.RefreshToken); request.AddParameter("client_id", _clientId); request.AddParameter("client_secret", _clientSecret); var token = await client.PostTaskAsync<TokenResponseDto>(request); if (token?.AccessToken == null) { return null; } token.Expiration = DateTime.UtcNow.AddSeconds(token.ExpiresIn); return token; }); }