/// <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)); }
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); } }
/// <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); }
/// <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)); }