示例#1
0
        private void GetModelsResponse(RESTConnector.Request req, RESTConnector.Response resp)
        {
            TranslationModels models = new TranslationModels();

            if (resp.Success)
            {
                try
                {
                    fsData   data = null;
                    fsResult r    = fsJsonParser.Parse(Encoding.UTF8.GetString(resp.Data), out data);
                    if (!r.Succeeded)
                    {
                        throw new WatsonException(r.FormattedMessages);
                    }

                    object obj = models;
                    r = sm_Serializer.TryDeserialize(data, obj.GetType(), ref obj);
                    if (!r.Succeeded)
                    {
                        throw new WatsonException(r.FormattedMessages);
                    }
                }
                catch (Exception e)
                {
                    Log.Error("NLC", "GetModels Exception: {0}", e.ToString());
                    resp.Success = false;
                }
            }

            if (((GetModelsReq)req).Callback != null)
            {
                ((GetModelsReq)req).Callback(resp.Success ? models : null);
            }
        }
        public IEnumerator TestListModels()
        {
            Log.Debug("LanguageTranslatorServiceV3IntegrationTests", "Attempting to ListModels...");
            TranslationModels listModelsResponse = null;

            service.ListModels(
                callback: (DetailedResponse <TranslationModels> response, IBMError error) =>
            {
                Log.Debug("LanguageTranslatorServiceV3IntegrationTests", "ListModels result: {0}", response.Response);
                listModelsResponse = response.Result;
                Assert.IsNotNull(listModelsResponse);
                Assert.IsNotNull(listModelsResponse.Models);
                Assert.IsTrue(listModelsResponse.Models.Count > 0);
                Assert.IsNull(error);
            },
                source: "en",
                target: "fr",
                defaultModels: true
                );

            while (listModelsResponse == null)
            {
                yield return(null);
            }
        }
示例#3
0
        /// <summary>
        /// List models. Lists available translation models.
        /// </summary>
        /// <param name="source">Specify a language code to filter results by source language. (optional)</param>
        /// <param name="target">Specify a language code to filter results by target language. (optional)</param>
        /// <param name="defaultModels">If the default parameter isn't specified, the service will return all models (default and non-default) for each language pair. To return only default models, set this to `true`. To return only non-default models, set this to `false`. (optional)</param>
        /// <returns><see cref="TranslationModels" />TranslationModels</returns>
        public TranslationModels ListModels(string source = null, string target = null, bool?defaultModels = null)
        {
            TranslationModels result = null;

            try
            {
                var request = this.Client.WithAuthentication(this.UserName, this.Password)
                              .GetAsync($"{this.Endpoint}/v2/models");
                if (!string.IsNullOrEmpty(source))
                {
                    request.WithArgument("source", source);
                }
                if (!string.IsNullOrEmpty(target))
                {
                    request.WithArgument("target", target);
                }
                if (defaultModels != null)
                {
                    request.WithArgument("default", defaultModels);
                }
                result = request.As <TranslationModels>().Result;
            }
            catch (AggregateException ae)
            {
                throw ae.Flatten();
            }

            return(result);
        }
        public IEnumerator TestListModels()
        {
            conn = Substitute.For <RESTConnector>();
            service.Connector = conn;

            var translationModelsResponse = new DetailedResponse <TranslationModels>()
            {
                Result = new TranslationModels()
                {
                    Models = new List <TranslationModel>()
                    {
                        new TranslationModel()
                        {
                            ModelId      = "ar-en",
                            Source       = "ar",
                            Target       = "en",
                            BaseModelId  = "",
                            Domain       = "news",
                            Customizable = true,
                            DefaultModel = true,
                            Owner        = "",
                            Name         = ""
                        }
                    }
                }
            };

            conn.Send(
                Arg.Do <RESTConnector.Request>(
                    req => {
                if (((RequestObject <TranslationModels>)req).Callback != null)
                {
                    Assert.IsTrue(conn.URL == "https://gateway.watsonplatform.net/language-translator/api/v3/models");
                    ((RequestObject <TranslationModels>)req).Callback(translationModelsResponse, null);
                }
            }
                    ));


            TranslationModels listModelsResponse = null;

            service.ListModels(
                callback: (DetailedResponse <TranslationModels> response, IBMError error) =>
            {
                Log.Debug("LanguageTranslatorServiceV3UnitTests", "ListModels result: {0}", response.Result.Models[0].ModelId);
                listModelsResponse = response.Result;
                Assert.IsNotNull(listModelsResponse);
                Assert.IsTrue(listModelsResponse.Models.Count > 0);
                Assert.IsNull(error);
            },
                source: "en",
                target: "fr"
                );
            while (listModelsResponse == null)
            {
                yield return(null);
            }
        }
        /// <summary>
        /// List models.
        ///
        /// Lists available translation models.
        /// </summary>
        /// <param name="source">Specify a language code to filter results by source language. (optional)</param>
        /// <param name="target">Specify a language code to filter results by target language. (optional)</param>
        /// <param name="defaultModels">If the default parameter isn't specified, the service will return all models
        /// (default and non-default) for each language pair. To return only default models, set this to `true`. To
        /// return only non-default models, set this to `false`. There is exactly one default model per language pair,
        /// the IBM provided base model. (optional)</param>
        /// <param name="customData">Custom data object to pass data including custom request headers.</param>
        /// <returns><see cref="TranslationModels" />TranslationModels</returns>
        public TranslationModels ListModels(string source = null, string target = null, bool?defaultModels = null, Dictionary <string, object> customData = null)
        {
            if (string.IsNullOrEmpty(VersionDate))
            {
                throw new ArgumentNullException("versionDate cannot be null.");
            }

            TranslationModels result = null;

            try
            {
                IClient client = this.Client;
                if (_tokenManager != null)
                {
                    client = this.Client.WithAuthentication(_tokenManager.GetToken());
                }
                if (_tokenManager == null)
                {
                    client = this.Client.WithAuthentication(this.UserName, this.Password);
                }

                var restRequest = client.GetAsync($"{this.Endpoint}/v3/models");

                restRequest.WithArgument("version", VersionDate);
                if (!string.IsNullOrEmpty(source))
                {
                    restRequest.WithArgument("source", source);
                }
                if (!string.IsNullOrEmpty(target))
                {
                    restRequest.WithArgument("target", target);
                }
                if (defaultModels != null)
                {
                    restRequest.WithArgument("default", defaultModels);
                }
                if (customData != null)
                {
                    restRequest.WithCustomData(customData);
                }

                restRequest.WithHeader("X-IBMCloud-SDK-Analytics", "service_name=language_translator;service_version=v3;operation_id=ListModels");
                result = restRequest.As <TranslationModels>().Result;
                if (result == null)
                {
                    result = new TranslationModels();
                }
                result.CustomData = restRequest.CustomData;
            }
            catch (AggregateException ae)
            {
                throw ae.Flatten();
            }

            return(result);
        }
示例#6
0
 private void OnGetModels(TranslationModels models)
 {
     Test(models != null);
     if (models != null)
     {
         foreach (var model in models.models)
         {
             Log.Status("TestTranslate", "ModelID: {0}, Source: {1}, Target: {2}, Domain: {3}",
                        model.model_id, model.source, model.target, model.domain);
         }
     }
     m_GetModelsTested = true;
 }
        private void OnGetModels(TranslationModels models)
        {
            Log.Status("TranslatorWidget", "OnGetModels, Count: {0}", models.models.Length);
            if (models != null && models.models.Length > 0)
            {
                m_LanguageToTranslate.Clear();

                List <string> listLanguages = new List <string>(); //From - To language list to use in translation

                //Adding initial language as detected!
                listLanguages.Add(m_DetectLanguageID);
                m_LanguageToTranslate.Add(m_DetectLanguageID, new List <string>());

                foreach (var model in models.models)
                {
                    if (string.Equals(model.domain, m_DefaultDomainToUse))
                    {
                        if (m_LanguageToTranslate.ContainsKey(model.source))
                        {
                            if (!m_LanguageToTranslate[model.source].Contains(model.target))
                            {
                                m_LanguageToTranslate[model.source].Add(model.target);
                            }
                        }
                        else
                        {
                            m_LanguageToTranslate.Add(model.source, new List <string>());
                            m_LanguageToTranslate[model.source].Add(model.target);
                        }

                        if (!listLanguages.Contains(model.source))
                        {
                            listLanguages.Add(model.source);
                        }
                        if (!listLanguages.Contains(model.target))
                        {
                            listLanguages.Add(model.target);
                        }

                        if (!m_LanguageToTranslate[m_DetectLanguageID].Contains(model.target))
                        {
                            m_LanguageToTranslate[m_DetectLanguageID].Add(model.target);
                        }
                    }
                }

                m_Languages = listLanguages.ToArray();
                ResetSourceLanguageDropDown();
                ResetVoiceForTargetLanguage();
            }
        }
示例#8
0
        /// <summary>
        /// List models. Lists available translation models.
        /// </summary>
        /// <param name="source">Specify a language code to filter results by source language. (optional)</param>
        /// <param name="target">Specify a language code to filter results by target language. (optional)</param>
        /// <param name="defaultModels">If the default parameter isn't specified, the service will return all models (default and non-default) for each language pair. To return only default models, set this to `true`. To return only non-default models, set this to `false`. (optional)</param>
        /// <param name="customData">Custom data object to pass data including custom request headers.</param>
        /// <returns><see cref="TranslationModels" />TranslationModels</returns>
        public TranslationModels ListModels(string source = null, string target = null, bool?defaultModels = null, Dictionary <string, object> customData = null)
        {
            TranslationModels result = null;

            try
            {
                IClient client;
                if (_tokenManager == null)
                {
                    client = this.Client.WithAuthentication(this.UserName, this.Password);
                }
                else
                {
                    client = this.Client.WithAuthentication(_tokenManager.GetToken());
                }
                var restRequest = client.GetAsync($"{this.Endpoint}/v2/models");

                if (!string.IsNullOrEmpty(source))
                {
                    restRequest.WithArgument("source", source);
                }
                if (!string.IsNullOrEmpty(target))
                {
                    restRequest.WithArgument("target", target);
                }
                if (defaultModels != null)
                {
                    restRequest.WithArgument("default", defaultModels);
                }
                if (customData != null)
                {
                    restRequest.WithCustomData(customData);
                }
                result = restRequest.As <TranslationModels>().Result;
                if (result == null)
                {
                    result = new TranslationModels();
                }
                result.CustomData = restRequest.CustomData;
            }
            catch (AggregateException ae)
            {
                throw ae.Flatten();
            }

            return(result);
        }
        public void ListModels_Success()
        {
            IClient client = this.CreateClient();

            IRequest request = Substitute.For <IRequest>();

            client.GetAsync(Arg.Any <string>())
            .Returns(request);

            TranslationModels response = new TranslationModels()
            {
                Models = new List <TranslationModel>()
                {
                    new TranslationModel()
                    {
                        ModelId      = "ar-en",
                        Source       = "ar",
                        Target       = "en",
                        BaseModelId  = "",
                        Domain       = "news",
                        Customizable = true,
                        DefaultModel = true,
                        Owner        = "",
                        Status       = TranslationModel.StatusEnum.AVAILABLE,
                        Name         = ""
                    }
                }
            };

            request.WithArgument(Arg.Any <string>(), Arg.Any <string>())
            .Returns(request);

            request.As <TranslationModels>()
            .Returns(Task.FromResult(response));

            LanguageTranslatorService service =
                new LanguageTranslatorService(client);

            service.VersionDate = "versionDate";

            var translationModels = service.ListModels("ar", "en");

            Assert.IsNotNull(translationModels);
            client.Received().GetAsync(Arg.Any <string>());
            Assert.IsTrue(translationModels.Models.Count > 0);
        }
    private IEnumerator ExampleListModels()
    {
        TranslationModels listModelsResponse = null;

        service.ListModels(
            callback: (DetailedResponse <TranslationModels> response, IBMError error) =>
        {
            Log.Debug("LanguageTranslatorServiceV3", "ListModels result: {0}", response.Response);
            listModelsResponse = response.Result;
        },
            source: "en",
            target: "fr"
            );

        while (listModelsResponse == null)
        {
            yield return(null);
        }
    }
        public TranslationModels ListModels(bool isDefault = true, string source = null, string target = null)
        {
            TranslationModels result = null;

            try
            {
                result =
                    this.Client.WithAuthentication(this.UserName, this.Password)
                    .GetAsync($"{this.Endpoint}{PATH_LIST_MODELS}")
                    .WithArgument("source", source)
                    .WithArgument("target", target)
                    .WithArgument("default", isDefault.ToString())
                    .As <TranslationModels>()
                    .Result;
            }
            catch (AggregateException ae)
            {
                throw ae.Flatten();
            }

            return(result);
        }
 private void OnGetModels(TranslationModels models, Dictionary <string, object> customData)
 {
     Log.Debug("ExampleLanguageTranslator.OnGetModels()", "Language Translator - Get models response: {0}", customData["json"].ToString());
     _getModelsTested = true;
 }
示例#13
0
 private void OnGetModels(TranslationModels models, string customData)
 {
     Log.Debug("TestLanguageTranslator", "Language Translator - Get models response: {0}", customData);
     Test(models != null);
     _getModelsTested = true;
 }