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);
        }
示例#2
0
 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);
        }
示例#4
0
        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);
        }