private async Task <T> GetAsync <T>(string url, TokenDto token) where T : new() { var request = new RestRequest(url); request.AddHeader("Authorization", "Bearer " + token.AccessToken); request.AddHeader("Referer", "https://my.tado.com/"); return(await _client.GetTaskAsync <T>(request)); }
private async Task <TokenDto> RefreshTokenAsync(TokenDto token) { if ((token.Expires - DateTime.UtcNow).TotalMinutes > 1.5) { return(token); } var refreshRequest = new RestRequest("oauth/token"); refreshRequest.AddQueryParameter("client_id", "tado-webapp"); refreshRequest.AddQueryParameter("grant_type", "refresh_token"); refreshRequest.AddQueryParameter("refresh_token", token.RefreshToken); refreshRequest.AddQueryParameter("scope", "home.user"); refreshRequest.AddHeader("Origin", "https://my.tado.com"); refreshRequest.AddHeader("Referer", "https://my.tado.com/"); token = await _client.PostTaskAsync <TokenDto>(refreshRequest); token.Expires = DateTime.UtcNow.AddSeconds(token.ExpiresIn); return(token); }