Esempio n. 1
0
        /// <summary>
        ///     Asyncronous method that validate the user parameters and call <c>ApiClient</c>
        /// </summary>
        /// <param name="parameters"></param>
        /// <returns>Returns a <c>TextClassificationDto</c> populated with the result of the call </returns>
        /// <seealso cref="TextClassificationDto"/>
        public Task <TextClassificationDto> CallTextClassificationAsync(TextClassificationParameters parameters)
        {
            ServiceUtils.ParameterValidation(parameters);
            if (parameters.MinScore < 0.0 || parameters.MinScore > 1.0)
            {
                throw new ArgumentException(ErrorMessages.WrongMinScore, ErrorMessages.MinScore);
            }
            if (parameters.MaxAnnotations < 1)
            {
                throw new ArgumentException(ErrorMessages.WrongMaxAnnotations, ErrorMessages.MaxAnnotations);
            }
            if (parameters.Include != null)
            {
                if (parameters.Include.FindAll(x => x != IncludeOption.score_details).ToList().Count > 0)
                {
                    throw new ArgumentException(ErrorMessages.WrongInclude2, ErrorMessages.Include);
                }
            }
            var source = SourceValidationService.verifySingleSource(parameters);

            return(_apiClient.CallApiAsync <TextClassificationDto>(ApiClient.TextClassificationUriBuilder(), ApiClient.TextClassificationContentBuilder(source, parameters), parameters.HttpMethod));
        }
Esempio n. 2
0
        public async void Should_ThrowException_When_CallTextClassificationWithWrongParameters(TextClassificationParameters parameters, string message, string wrongParameter)
        {
            //Act & Assert

            ArgumentException ex = await Assert.ThrowsAsync <ArgumentException>(() => _textClassificationService.CallTextClassificationAsync(parameters));

            if (String.IsNullOrEmpty(wrongParameter))
            {
                Assert.Equal(message, ex.Message);
            }
            else
            {
                Assert.Equal($"{message}{Environment.NewLine}Parameter name: {wrongParameter}", ex.Message);
            }
        }
Esempio n. 3
0
        /// <summary>
        ///     Allocates a dictionary that contains the parameters for the call
        /// </summary>
        /// <param name="source"> a dictionary that contains the text source</param>
        /// <param name="parameters"></param>
        /// <returns>Returns the dictionary </returns>
        public static List <KeyValuePair <string, string> > TextClassificationContentBuilder(List <KeyValuePair <string, string> > source, TextClassificationParameters parameters)
        {
            var content = new List <KeyValuePair <string, string> >();

            content.Add(new KeyValuePair <string, string>("token", parameters.Token));
            content.AddRange(source);

            if (parameters.MinScore != DefaultValues.MinScore)
            {
                content.Add(new KeyValuePair <string, string>("min_score", parameters.MinScore.ToString()));
            }
            if (parameters.MaxAnnotations != DefaultValues.MaxAnnotations)
            {
                content.Add(new KeyValuePair <string, string>("max_annotations", parameters.MaxAnnotations.ToString()));
            }
            if (parameters.Include != DefaultValues.Include)
            {
                content.Add(new KeyValuePair <string, string>("include", $"{String.Join(" , ", parameters.Include)}"));
            }
            return(content);
        }
Esempio n. 4
0
 /// <summary>
 ///     Asyncronous method that call <see href="https://dandelion.eu/docs/api/datatxt/cl/v1/">Text Classification end-point</see> on a text source
 /// </summary>
 /// <param name="parameters"> Parameters to specify all options for the Text Classification process </param>
 /// <returns>Returns a <c>TextClassificationDto</c> populated with the result of the Text Classification process </returns>
 /// <seealso cref="TextClassificationDto"/>
 public static Task <TextClassificationDto> ClassifyTextAsync(TextClassificationParameters parameters)
 {
     Init();
     return(_textClassificationService.CallTextClassificationAsync(parameters));
 }