Beispiel #1
0
        public async Task When_response_is_successful_Should_return_correct_result()
        {
            // arrange
            var translatorResponse = new TranslatorResponse
            {
                SuccessfulTranslationsCount = new SuccessfulTranslationsCount
                {
                    Total = 1
                },
                Contents = new TranslationContents
                {
                    OriginalText   = "text",
                    TranslatedText = "translated text"
                }
            };
            var restCLientMock = new Mock <IRestClient>();

            restCLientMock
            .Setup(x => x.ExecuteAsync(It.IsAny <IRestRequest>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(new RestResponse {
                StatusCode = HttpStatusCode.OK, Content = JsonConvert.SerializeObject(translatorResponse), ResponseStatus = ResponseStatus.Completed
            });
            var client = new FunTranslationsApiClient("http://localhost", restCLientMock.Object);

            // act
            var result = await client.GetTranslation("text");

            // assert
            result.Should().Be("translated text");
        }
        public async static Task <TranslationData> Translate(string data, Language toLang)
        {
            System.Object[] body        = new System.Object[] { new { Text = data } };
            var             requestBody = JsonConvert.SerializeObject(body);

            string uri = host + path + params_ + LanguageLookup.Languages[(int)toLang];

            using (var client = new HttpClient())
                using (var request = new HttpRequestMessage())
                {
                    request.Method     = HttpMethod.Post;
                    request.RequestUri = new Uri(uri);
                    request.Content    = new StringContent(requestBody, Encoding.UTF8, "application/json");
                    request.Headers.Add("Ocp-Apim-Subscription-Key", key);

                    var response = await client.SendAsync(request);

                    var responseBody = await response.Content.ReadAsStringAsync();

                    // remove [] surrounding json response
                    TranslatorResponse result = JsonConvert.DeserializeObject <TranslatorResponse>(responseBody.Substring(1, responseBody.Length - 2));

                    TranslationData translationData = new TranslationData();
                    translationData.SecondaryLanguage = LanguageLookup.FindLanguage(result.Translations[0].To);
                    translationData.SecondaryText     = result.Translations[0].Text;
                    translationData.PrimaryLanguage   = LanguageLookup.FindLanguage(result.DetectedLanguage.Language);
                    translationData.PrimaryText       = data;
                    return(translationData);
                }
        }