private async Task <JObject> GetEntity(string entityId, ContentHubConnectionPolicy contentHubPolicy) { var request = WebRequest.Create($"{contentHubPolicy.ProtocolAndHost}/api/entities/{entityId}"); request.Method = "GET"; var token = await GetToken(contentHubPolicy).ConfigureAwait(false); request.Headers.Add("X-Auth-Token", token); string responseContent = null; using (var response = request.GetResponse()) { using (var responseStream = response.GetResponseStream()) { using (var streamReader = new StreamReader(responseStream)) { responseContent = streamReader.ReadToEnd(); } } } if (!string.IsNullOrEmpty(responseContent)) { return(JObject.Parse(responseContent)); } return(null); }
private async Task <string> GetToken(ContentHubConnectionPolicy contentHubPolicy) { var cache = _cacheManager.GetCache(contentHubPolicy.TokenCacheName); if (cache == null) { cache = _cacheManager.CreateCache(contentHubPolicy.TokenCacheName); } var securityToken = await cache.Get <string>(TOKEN_NAME).ConfigureAwait(false); if (string.IsNullOrEmpty(securityToken)) { var request = WebRequest.Create(string.Format("{0}/api/authenticate", contentHubPolicy.ProtocolAndHost)); request.Method = "POST"; request.ContentType = "application/json"; using (var streamWriter = new StreamWriter(request.GetRequestStream())) { var jsonObject = new { user_name = contentHubPolicy.UserName, password = contentHubPolicy.Password, discard_existing = false }; streamWriter.Write(JsonConvert.SerializeObject(jsonObject)); streamWriter.Flush(); streamWriter.Close(); } string responseContent = null; using (var response = request.GetResponse()) { using (var responseStream = response.GetResponseStream()) { using (var streamReader = new StreamReader(responseStream)) { responseContent = streamReader.ReadToEnd(); } } } var o = JObject.Parse(responseContent); securityToken = (string)o["token"]; await cache.SetString(TOKEN_NAME, securityToken).ConfigureAwait(false); } return(securityToken); }