public async Task<Tokens> GetStoredTokens() { try { var tokens = new Tokens().Deserialize("Tokens.json"); return tokens.ExpiryDate >= DateTime.Now ? tokens : await ParseResponseAndStore(GetRefreshTokenResponse(tokens.RefreshToken)); } catch (Exception ex) { return new Tokens(); } }
private static async Task<Tokens> ParseResponseAndStore(Task<string> response) { var content = await response; var jsonObj = JObject.Parse(content); var token = jsonObj.SelectToken("$.access_token"); var refreshToken = jsonObj.SelectToken("$.refresh_token"); var expires = jsonObj.SelectToken("$['.expires']"); var tokens = new Tokens { AccessToken = token.ToString(), RefreshToken = refreshToken.ToString(), ExpiryDate = DateTime.Parse(expires.ToString()) }; tokens.Serialize("Tokens.json"); return tokens; }