public async Task <string> GetCSRFToken(bool _useCache = true) { if (!_useCache || !IsTokenCacheValid()) { //Refresh token cache m_tokenCache = await GetNewTokenCache(); } return(m_tokenCache.csrf.value); }
private async Task <CsrfTokenCache> GetNewTokenCache() { IRestResponse tokenResponse = await SendGetCsrfTokenRequestAsync(); if (tokenResponse.StatusCode != HttpStatusCode.OK) { throw new Exception(String.Format("Error getting 3DSpace CSRF token ({0} : {1}) ", tokenResponse.StatusCode, tokenResponse.ErrorMessage)); } CsrfTokenResponse csrfTokenResponse = SimpleJson.DeserializeObject <CsrfTokenResponse>(tokenResponse.Content); CsrfTokenCache tokenCache = new CsrfTokenCache(); tokenCache.received = DateTime.Now; tokenCache.csrf = csrfTokenResponse.csrf; return(tokenCache); }
private bool _IsTokenCacheValid(CsrfTokenCache _cache) { if (_cache == null) { return(false); } if (_cache.csrf == null) { return(false); } System.TimeSpan timeInterval = (DateTime.Now - _cache.received); if (timeInterval.TotalMinutes > CSRF_CACHE_INTERVAL) { return(false); } return(true); }