public void GetApiMethodFullDescriptionSelectAudio() { var description = vkApiSpecifier.GetApiMethodFullDescription(selectAudioMethodName); Assert.IsNotNull(description); var expected = new ApiMethodDescription { MethodDescription = new CommonDescription(selectAudioMethodName, "Gets user audio tracks. If userId is not presented gets authorized user audio tracks"), ParamDescriptions = new[] { new ApiParamDescription { ParamDescription = new CommonDescription("userId"), }, new ApiParamDescription { ParamDescription = new CommonDescription("batchSize", "number of audios to return"), Required = true, MinValue = 1, MaxValue = 100 }, }, ReturnDescription = new ApiParamDescription { ParamDescription = new CommonDescription() } }; AssertDescriptionAreEquals(expected, description); }
public void GetApiMethodFullDescriptionCountAudio() { var description = vkApiSpecifier.GetApiMethodFullDescription(countAudioMethodName); Assert.IsNotNull(description); var expected = new ApiMethodDescription { MethodDescription = new CommonDescription(countAudioMethodName, "Gets user audio tracks count. If userId is not presented gets authorized user audio tracks"), ParamDescriptions = new[] { new ApiParamDescription { ParamDescription = new CommonDescription("userId"), }, }, ReturnDescription = new ApiParamDescription { Required = true, ParamDescription = new CommonDescription(), MinValue = 0, MaxValue = int.MaxValue / 2 } }; AssertDescriptionAreEquals(expected, description); }
public ApiMethodDescription GetApiMethodFullDescription(string methodName) { var method = GetMethod(methodName); if (method == null) { return(null); } if (method.GetCustomAttribute <ApiMethodAttribute>() == null) { return(null); } var result = new ApiMethodDescription(); result.MethodDescription = new CommonDescription(methodName); result.MethodDescription.Description = method.GetCustomAttribute <ApiDescriptionAttribute>()?.Description; result.ParamDescriptions = method.GetParameters() .Select(p => GetApiMethodParamFullDescription(methodName, p.Name)) .ToArray(); if (method.ReturnParameter != null && method.ReturnParameter.ParameterType == typeof(void)) { return(result); } result.ReturnDescription = new ApiParamDescription { ParamDescription = new CommonDescription() }; FillInApiParamDescription(method.ReturnParameter, result.ReturnDescription); return(result); }
public void GetApiMethodFullDescriptionAuthorize() { var description = vkApiSpecifier.GetApiMethodFullDescription(authorizeMethodName); Assert.IsNotNull(description); var expected = new ApiMethodDescription { MethodDescription = new CommonDescription(authorizeMethodName, "Authorize user. Returns true if authorized"), ParamDescriptions = new[] { new ApiParamDescription { ParamDescription = new CommonDescription("login"), Required = true }, new ApiParamDescription { ParamDescription = new CommonDescription("password"), Required = true }, new ApiParamDescription { ParamDescription = new CommonDescription("allowNoname"), }, } }; AssertDescriptionAreEquals(expected, description); }
public ApiMethodDescription GetApiMethodFullDescription(string methodName) { var result = new ApiMethodDescription(); var methodInfo = typeof(T).GetMethod(methodName); if (methodInfo == null) { return(null); } var methodAttributes = methodInfo.GetCustomAttributes().OfType <ApiMethodAttribute>(); if (methodAttributes.Count() == 0) { return(null); } result.MethodDescription = new CommonDescription(methodName, GetApiMethodDescription(methodName)); result.ParamDescriptions = SetParamsDescription(methodInfo, methodName); var returnInfo = methodInfo.ReturnTypeCustomAttributes; result = SetRequireFlag(returnInfo, result); result = SetReturnMaxAndMinValue(returnInfo, result); return(result); }
public ApiMethodDescription GetApiMethodFullDescription(string methodName) { var method = typeof(T).GetMethod(methodName); if (method?.GetCustomAttributes().OfType <ApiMethodAttribute>().FirstOrDefault() == null) { return(null); } var apiMethodDescription = new ApiMethodDescription() { MethodDescription = new CommonDescription() { Name = methodName, Description = GetApiMethodDescription(methodName) }, ParamDescriptions = GetApiMethodParamDescriptions(methodName).ToArray() }; var required = method.ReturnParameter ?.GetCustomAttributes().OfType <ApiRequiredAttribute>().FirstOrDefault(); var validation = method.ReturnParameter ?.GetCustomAttributes().OfType <ApiIntValidationAttribute>().FirstOrDefault(); if (required != null || validation != null) { apiMethodDescription.ReturnDescription = new ApiParamDescription { Required = required?.Required ?? false, MaxValue = validation?.MaxValue, MinValue = validation?.MinValue } } ; return(apiMethodDescription); }
public ApiMethodDescription SetReturnMaxAndMinValue( ICustomAttributeProvider returnInfo, ApiMethodDescription result) { var returnParamsIntValidation = returnInfo .GetCustomAttributes(true) .OfType <ApiIntValidationAttribute>(); if (returnParamsIntValidation.Count() != 0) { result.ReturnDescription.MaxValue = returnParamsIntValidation.First().MaxValue; result.ReturnDescription.MinValue = returnParamsIntValidation.First().MinValue; } return(result); }
public ApiMethodDescription SetRequireFlag(ICustomAttributeProvider returnInfo, ApiMethodDescription result) { var returnParamsRequired = returnInfo .GetCustomAttributes(true) .OfType <ApiRequiredAttribute>(); if (returnParamsRequired.Count() != 0) { result.ReturnDescription = new ApiParamDescription { Required = returnParamsRequired.First().Required }; } return(result); }
public ApiMethodDescription GetApiMethodFullDescription(string methodName) { var met = type.GetMethod(methodName); if (met == null || !met.GetCustomAttributes(true).OfType <ApiMethodAttribute>().Any()) { return(null); } var result = new ApiMethodDescription(); result.MethodDescription = new CommonDescription(methodName, GetApiMethodDescription(methodName)); result.ParamDescriptions = GetApiMethodParamNames(methodName).Select(param => GetApiMethodParamFullDescription(methodName, param)).ToArray(); var returnParameter = met.ReturnParameter; bool isNecessaryToSetReturnParameter = false; var returnParamDiscription = new ApiParamDescription(); returnParamDiscription.ParamDescription = new CommonDescription(); var descriptionAttribute = returnParameter.GetCustomAttributes(true).OfType <ApiDescriptionAttribute>().FirstOrDefault(); if (descriptionAttribute != null) { returnParamDiscription.ParamDescription.Description = descriptionAttribute.Description; isNecessaryToSetReturnParameter = true; } var intValidationAttribute = returnParameter.GetCustomAttributes(true).OfType <ApiIntValidationAttribute>().FirstOrDefault(); if (intValidationAttribute != null) { returnParamDiscription.MinValue = intValidationAttribute.MinValue; returnParamDiscription.MaxValue = intValidationAttribute.MaxValue; isNecessaryToSetReturnParameter = true; } var requiredAttribute = returnParameter.GetCustomAttributes(true).OfType <ApiRequiredAttribute>().FirstOrDefault(); if (requiredAttribute != null) { returnParamDiscription.Required = requiredAttribute.Required; isNecessaryToSetReturnParameter = true; } if (isNecessaryToSetReturnParameter) { result.ReturnDescription = returnParamDiscription; } return(result); }
private static void AssertDescriptionAreEquals(ApiMethodDescription expected, ApiMethodDescription actual) { AssertCommonDescriptionAreEquals(expected.MethodDescription, actual.MethodDescription); AssertParamDescriptionAreEquals(expected.ReturnDescription, actual.ReturnDescription); if (expected.ParamDescriptions == null && actual.ParamDescriptions == null) { return; } Assert.AreEqual(expected.ParamDescriptions?.Length, actual.ParamDescriptions?.Length); var expectedParamDescriptions = expected.ParamDescriptions.OrderBy(x => x.ParamDescription?.Name).ToArray(); var actualParamDescriptions = actual.ParamDescriptions.OrderBy(x => x.ParamDescription?.Name).ToArray(); for (var i = 0; i < expected.ParamDescriptions.Length; i++) { AssertParamDescriptionAreEquals(expectedParamDescriptions[i], actualParamDescriptions[i]); } }