private static TypeScriptExpression GenerateConstructGetParams(IParameterInfo[] parameters, string routeTemplate) { var literalProperties = parameters .Select <IParameterInfo, TypeScriptObjectLiteralInitializer>(parameter => { if (parameter.GetAttributes(TypeInfo.From <FromBodyAttribute>()).Any()) { throw new Exception($"Невозможно обработать параметр {parameter.Name}: {parameter.ParameterType.Name} для пути {routeTemplate}"); } if (routeTemplate.Contains("{" + parameter.Name + "}")) { return(null); } return(new TypeScriptObjectLiteralProperty(new TypeScriptStringLiteral(parameter.Name), new TypeScriptVariableReference(parameter.Name))); }) .Where(x => x != null) .ToArray(); if (!literalProperties.Any()) { return(null); } var result = new TypeScriptObjectLiteral(literalProperties); return(result); }
private static TypeScriptExpression GenerateConstructGetParams(IParameterInfo[] parameters, string routeTemplate) { var literalProperties = parameters .Where(x => !routeTemplate.Contains("{" + x.Name + "}")) .Select(parameter => (TypeScriptObjectLiteralInitializer)new TypeScriptObjectLiteralProperty( new TypeScriptStringLiteral(parameter.Name), new TypeScriptVariableReference(parameter.Name))) .ToArray(); var result = new TypeScriptObjectLiteral(literalProperties); return result; }
private static TypeScriptExpression GenerateConstructGetParams(ParameterInfo[] parameters, string routeTemplate) { var literalProperties = parameters .Select <ParameterInfo, TypeScriptObjectLiteralInitializer>( parameter => { if (routeTemplate.Contains("{" + parameter.Name + "}")) { return(null); } return(new TypeScriptObjectLiteralProperty( new TypeScriptStringLiteral(parameter.Name), new TypeScriptVariableReference(parameter.Name) )); }) .Where(x => x != null) .ToArray(); var result = new TypeScriptObjectLiteral(literalProperties); return(result); }
private static TypeScriptExpression GenerateConstructBody(ParameterInfo[] parameters, string routeTemplate) { var bodyParameters = parameters.Where(x => !IsParameterPassedViaUrl(x, routeTemplate)).ToArray(); if (bodyParameters.Any(x => x.ParameterType.IsArray && x.GetCustomAttribute <FromBodyAttribute>() != null)) { if (bodyParameters.Length != 1) { throw new Exception("Only one array argument with Body attribute can appears in method signature"); } return(new TypeScriptVariableReference(bodyParameters[0].Name)); } var result = new TypeScriptObjectLiteral( parameters .Where(AcceptParameter) .Select <ParameterInfo, TypeScriptObjectLiteralInitializer>(parameter => { if (parameter.GetCustomAttributes <FromBodyAttribute>().Any()) { return(new TypeScriptObjectLiteralSpread(new TypeScriptVariableReference(parameter.Name))); } if (IsParameterPassedViaUrl(parameter, routeTemplate)) { // do nothing return(null); } return(new TypeScriptObjectLiteralProperty(new TypeScriptStringLiteral(parameter.Name), new TypeScriptVariableReference(parameter.Name))); }) .Where(x => x != null) .ToArray() ); return(result); }