public override AzureDocumentsList <LanguagesResponseDocument> AnalyzeDocuments <LanguagesResponseDocument>(AzureDocumentsList <RequestDocument> documents) { HttpResponseMessage response = this.CallApi(documents).Result; string responseContentString = response.Content.ReadAsStringAsync().Result; AzureDocumentsList <LanguagesResponseDocument> responseContent = JsonConvert.DeserializeObject <AzureDocumentsList <LanguagesResponseDocument> >(responseContentString); return(responseContent); }
protected async Task <HttpResponseMessage> CallApi(AzureDocumentsList <RequestDocument> documents) { //var httpWebRequest = (HttpWebRequest)WebRequest.Create(requestUri); //httpWebRequest.ContentType = "application/json"; //httpWebRequest.Method = "POST"; //httpWebRequest.Accept = "application/json"; //httpWebRequest.Headers.Add("Ocp-Apim-Subscription-Key", "92a9360b7d654314bffeba9ef388de67"); var request = new HttpRequestMessage() { RequestUri = requestUri, Method = HttpMethod.Post }; request.Headers.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); //request.Headers.Add("ContentType", "application/json"); request.Headers.AcceptEncoding.Add(new System.Net.Http.Headers.StringWithQualityHeaderValue("UTF-8")); request.Headers.Add("Ocp-Apim-Subscription-Key", "92a9360b7d654314bffeba9ef388de67"); request.Content = new StringContent(JsonConvert.SerializeObject(documents), Encoding.UTF8, "application/json"); HttpResponseMessage responseMessage = await client.SendAsync(request); return(responseMessage); }
public override AzureDocumentsList <T> AnalyzeDocuments <T>(AzureDocumentsList <RequestDocument> documents) { throw new NotImplementedException(); }
public abstract AzureDocumentsList <T> AnalyzeDocuments <T>(AzureDocumentsList <RequestDocument> documents) where T : ResponseDocument;
public AzureDocumentsList <U> AnalyzeArticles(List <Article> articles) { AzureDocumentsList <U> result = new AzureDocumentsList <U>(); Dictionary <string, U> articlePartDocumentDictionary = new Dictionary <string, U>(); Dictionary <string, Error> articlePartErrorDictionary = new Dictionary <string, Error>(); // TODO break apart the text parts as seperate documents since they all add to the document limit List <Article> splitArticles = new List <Article>(); foreach (Article article in articles) { articlePartDocumentDictionary.Add(article.Id, new U() { id = article.Id }); articlePartErrorDictionary.Add(article.Id, new Error() { id = article.Id }); List <string> articleTextParts = article.Content.GetTextParts(); int textPartCount = 1; foreach (string articleTextPart in articleTextParts) { splitArticles.Add( new Article() { Id = String.Concat(article.Id, "-", textPartCount), //Id = article.Id + textPartCount, Content = new ArticleContent { text = articleTextPart } } ); textPartCount++; } } for (int i = 0; i < splitArticles.Count; i += mDocumentLimit) { IEnumerable <Article> postable = splitArticles.Skip(i).Take(mDocumentLimit); List <RequestDocument> documents = postable.Select(x => new RequestDocument() { id = x.Id, text = x.Content.text }).ToList(); if (mLastRequestTime != null) { double secondsSinceLastCall = (mLastRequestTime - DateTime.Now).TotalSeconds; if (secondsSinceLastCall > 0 && (secondsSinceLastCall < mCallsPerSecond)) { Thread.Sleep((int)Math.Round(mCallsPerSecond - secondsSinceLastCall, 0)); } } mLastRequestTime = DateTime.Now; var analysisResults = mRequester.AnalyzeDocuments <U>(new AzureDocumentsList <RequestDocument> { documents = documents }); // Combine broken parts of articles to a single result document/error for each article foreach (var analysisResultDoc in analysisResults.documents) { string id = analysisResultDoc.id.Substring(0, analysisResultDoc.id.LastIndexOf("-")); var doc = articlePartDocumentDictionary[id]; if (doc != null) { doc.AddResponseData(analysisResultDoc); } } foreach (var analysisResultError in analysisResults.errors) { string id = analysisResultError.id.Substring(0, analysisResultError.id.LastIndexOf("-")); var error = articlePartErrorDictionary[id]; if (error != null) { error.message = String.Concat(error.message, Environment.NewLine, analysisResultError.message); } } //documentParts.AddRange(analysisResult.documents); //errorParts.AddRange(analysisResult.errors); } result.documents.AddRange(articlePartDocumentDictionary.Select(x => x.Value).ToList()); result.errors.AddRange(articlePartErrorDictionary.Where(x => !String.IsNullOrEmpty(x.Value.message)).Select(x => x.Value).ToList()); //result.documents.AddRange(analysisResult.documents); //result.errors.AddRange(analysisResult.errors); return(result); }