/// <summary> /// Communicate with Python web server via API. /// </summary> /// <param name="request">Text to analyze</param> /// <returns></returns> public LexisAnalysisResponse GetEmotions(LexisAnalysisRequest request) { try { var client = new RestClient(LexisServerApiUrl); var restRequest = new RestRequest("", Method.POST); DefaultContractResolver contractResolver = new DefaultContractResolver { NamingStrategy = new CamelCaseNamingStrategy() }; restRequest.AddParameter("application/json", JsonConvert.SerializeObject(request, new JsonSerializerSettings() { ContractResolver = contractResolver }), ParameterType.RequestBody); var response = client.Execute(restRequest); if (response.IsSuccessful) { var resp = JsonConvert.DeserializeObject <LexisAnalysisResponse>(response.Content); return(resp); } throw new Exception($"Request was failed with code: {response.StatusCode}, message: {response.Content}"); } catch (Exception ex) { throw new Exception("Failed to get emotions from server", ex); } }
public void IncompleteContent(string text, string feeling) { var service = Substitute.For <TextAnalysisService>(); service.LexisServerApiUrl.Returns("http://localhost:8080/api/predict"); var request = new LexisAnalysisRequest() { Input = text }; var response = service.GetEmotions(request); Assert.AreEqual(feeling, response.Response.Feeling); }