Ejemplo n.º 1
0
 private static void GenerateHttpMethodParameters(MethodReferenceInfo methodInfo, string prefix, StringBuilder builder, bool doSemicolon = true)
 {
     foreach (ParameterReferenceInfo parameter in methodInfo.Parameters)
     {
         builder.AppendLine($"{prefix + prefix + prefix} new ParameterInfo() {{ Name = nameof({parameter.Name}),Value = Newtonsoft.Json.JsonConvert.SerializeObject({parameter.Name}) }},");
     }
 }
Ejemplo n.º 2
0
        private static void GenerateHttpAsyncMethod(MethodReferenceInfo methodInfo, string serviceName, string prefix, StringBuilder builder, bool doSemicolon = true)
        {
            if (methodInfo.ReturnTypeName.Contains("SignalGo.Shared.Http.ActionResult"))
            {
                return;
            }
            string returnType = "public async Task";

            if (methodInfo.ReturnTypeName != "void")
            {
                returnType = "public async Task<" + methodInfo.ReturnTypeName + ">";
            }
            builder.AppendLine($"{prefix}{returnType} {methodInfo.Name}Async({GenerateMethodParameters(methodInfo)}){(doSemicolon ? ";" : "")}");
            //generate empty data
            if (!doSemicolon)
            {
                builder.AppendLine($"{prefix}{{");
                builder.AppendLine($"{prefix + prefix}HttpClientResponse result = await _httpClient.PostAsync(_serverUrl + (_serverUrl.EndsWith(\"/\") ? \"\" : \"{"/"}\") + \"{serviceName}/{methodInfo.Name}\", new ParameterInfo[]");
                builder.AppendLine($"{prefix + prefix}{{");
                GenerateHttpMethodParameters(methodInfo, prefix, builder, doSemicolon);
                builder.AppendLine($"{prefix + prefix}}});");
                builder.AppendLine($"{prefix + prefix}ResponseHeaders = result.ResponseHeaders;");
                builder.AppendLine($"{prefix + prefix}Status = result.Status;");
                if (methodInfo.ReturnTypeName != "void")
                {
                    builder.AppendLine($"{prefix + prefix}return SignalGo.Client.ClientSerializationHelper.DeserializeObject<{methodInfo.ReturnTypeName}>(result.Data);");
                }
                builder.AppendLine($"{prefix}}}");
            }
        }
Ejemplo n.º 3
0
        private string GenerateMethodParameters(MethodReferenceInfo methodInfo, string baseServiceName, Dictionary <string, Dictionary <string, string> > nameSpaces, bool isStream)
        {
            StringBuilder builder = new StringBuilder();
            int           index   = 0;

            foreach (ParameterReferenceInfo item in methodInfo.Parameters)
            {
                if (item.TypeName.StartsWith("SignalGo.Shared.Models.StreamInfo"))
                {
                    continue;
                }
                if (index > 0)
                {
                    builder.Append(", ");
                }
                string returnType = GetReturnTypeName(item.TypeName, baseServiceName, nameSpaces);
                //AddToDictionary(nameSpaces, returnType);
                builder.Append($"{item.Name}: {returnType}");
                index++;
            }
            if (isStream)
            {
                if (index > 0)
                {
                    builder.Append(", ");
                }
                builder.Append("...params: any[]");
            }
            return(builder.ToString());
        }
Ejemplo n.º 4
0
 private static void GenerateHttpMethodParameters(MethodReferenceInfo methodInfo, string prefix, StringBuilder builder, bool doSemicolon = true)
 {
     foreach (ParameterReferenceInfo parameter in methodInfo.Parameters)
     {
         builder.AppendLine($"{prefix + prefix + prefix} new  SignalGo.Shared.Models.ParameterInfo() {{ Name = nameof({parameter.Name}),Value = SignalGo.Client.ClientSerializationHelper.SerializeObject({parameter.Name}) }},");
     }
 }
Ejemplo n.º 5
0
 private static void GenerateOneWayMethod(MethodReferenceInfo methodInfo, string serviceName, string prefix, StringBuilder builder)
 {
     builder.AppendLine($"{prefix}public {methodInfo.ReturnTypeName} {methodInfo.Name}({GenerateMethodParameters(methodInfo)})");
     builder.AppendLine($"{prefix}{{");
     builder.AppendLine($"{prefix + prefix}return SignalGo.Client.ClientProvider.SendOneWayMethod<{methodInfo.ReturnTypeName}>(_signalGoServerAddress, _signalGoPortNumber, \"{serviceName}\", \"{methodInfo.Name}\"{GenerateMethodParametersWitoutTypes(methodInfo)});");
     builder.AppendLine($"{prefix}}}");
 }
Ejemplo n.º 6
0
        private static void GenerateHttpMethod(string serviceName, MethodReferenceInfo methodInfo, StringBuilder builder)
        {
            builder.AppendLine($"{GetTabs(4)}{{");
            builder.AppendLine($"{GetTabs(5)}\"name\": \"{methodInfo.GetMethodName()}\",");
            builder.AppendLine($@"{GetTabs(5)}""request"": {{
{GetTabs(6)}""method"": ""POST"",
{GetTabs(6)}""header"": [],
{GetTabs(6)}""body"": {{
{GetTabs(6)}	""mode"": ""raw"",
{GetTabs(6)}	""raw"": ""{GenerateMethodParameter(methodInfo)}"",
{GetTabs(6)}	""options"": {{
{GetTabs(6)}		""raw"": {{
{GetTabs(6)}			""language"": ""json""
{GetTabs(6)}		}}
{GetTabs(6)}	}}
{GetTabs(6)}}},
{GetTabs(6)}""url"": {{
{GetTabs(6)}	""raw"": ""{{{{endpoint}}}}/{serviceName}/{methodInfo.GetMethodName()}"",
{GetTabs(6)}	""host"": [
{GetTabs(6)}	""{{{{endpoint}}}}""
{GetTabs(6)}	],
{GetTabs(6)}	""path"": [
{GetTabs(6)}		""{serviceName}"",
{GetTabs(6)}		""{methodInfo.GetMethodName()}""
{GetTabs(6)}	]
{GetTabs(6)}}}
{GetTabs(5)}}}
{GetTabs(4)}}},");
        }
Ejemplo n.º 7
0
        private static void GenerateInterfaceMethodAsync(MethodReferenceInfo methodInfo, string prefix, StringBuilder builder)
        {
            string returnType = "Task";

            if (methodInfo.ReturnTypeName != "void")
            {
                returnType = "Task<" + methodInfo.ReturnTypeName + ">";
            }
            builder.AppendLine($"{prefix}{returnType} {methodInfo.Name}Async({GenerateMethodParameters(methodInfo)});");
        }
Ejemplo n.º 8
0
 private void GenerateMethodParameters(MethodInfo methodInfo, MethodReferenceInfo methodReferenceInfo)
 {
     foreach (System.Reflection.ParameterInfo item in methodInfo.GetParameters())
     {
         ParameterReferenceInfo parameterReferenceInfo = new ParameterReferenceInfo();
         AddToGenerate(item.ParameterType);
         parameterReferenceInfo.Name     = item.Name;
         parameterReferenceInfo.TypeName = GetFullNameOfType(item.ParameterType, true);
         methodReferenceInfo.Parameters.Add(parameterReferenceInfo);
     }
 }
Ejemplo n.º 9
0
        private static string GenerateMethodParametersWitoutTypes(MethodReferenceInfo methodInfo)
        {
            StringBuilder builder = new StringBuilder();

            foreach (ParameterReferenceInfo item in methodInfo.Parameters)
            {
                builder.Append(", ");
                builder.Append($"new SignalGo.Shared.Models.ParameterInfo() {{  Name = \"{item.Name}\", Value = SignalGo.Client.ClientSerializationHelper.SerializeObject({item.Name}) }}");
            }
            return(builder.ToString());
        }
Ejemplo n.º 10
0
        private string GenerateMethodParametersWitoutTypes(MethodReferenceInfo methodInfo)
        {
            StringBuilder builder = new StringBuilder();

            foreach (ParameterReferenceInfo item in methodInfo.Parameters)
            {
                builder.Append(", ");
                builder.Append($"{item.Name}");
            }
            return(builder.ToString());
        }
Ejemplo n.º 11
0
        private static string GenerateMethodParameters(MethodReferenceInfo methodInfo)
        {
            StringBuilder builder = new StringBuilder();
            int           index   = 0;

            foreach (ParameterReferenceInfo item in methodInfo.Parameters)
            {
                if (index > 0)
                {
                    builder.Append(", ");
                }
                builder.Append($"{item.TypeName} {item.Name}");
                index++;
            }
            return(builder.ToString());
        }
Ejemplo n.º 12
0
        private string GenerateMethodParameters(MethodReferenceInfo methodInfo, string baseServiceName)
        {
            StringBuilder builder = new StringBuilder();
            int           index   = 0;

            foreach (ParameterReferenceInfo item in methodInfo.Parameters)
            {
                if (index > 0)
                {
                    builder.Append(", ");
                }
                builder.Append($"{item.Name}: {GetReturnTypeName(item.TypeName, baseServiceName)}");
                index++;
            }
            return(builder.ToString());
        }
Ejemplo n.º 13
0
        private static void GenerateOneWayMethodAsync(MethodReferenceInfo methodInfo, string serviceName, string prefix, StringBuilder builder)
        {
            string returnType = "Task";

            if (methodInfo.ReturnTypeName != "void")
            {
                returnType = "Task<" + methodInfo.ReturnTypeName + ">";
            }

            builder.AppendLine($"{prefix}public {returnType} {methodInfo.Name}Async({GenerateMethodParameters(methodInfo)})");
            builder.AppendLine($"{prefix}{{");
            string result = $"SignalGo.Client.ClientProvider.SendOneWayMethodAsync<{methodInfo.ReturnTypeName}>(_signalGoServerAddress, _signalGoPortNumber, \"{serviceName}\", \"{methodInfo.Name}\"{GenerateMethodParametersWitoutTypes(methodInfo)})";

            builder.AppendLine($"{prefix + prefix}return {result};");

            builder.AppendLine($"{prefix}}}");
        }
Ejemplo n.º 14
0
        private static void GenerateAsyncMethod(MethodReferenceInfo methodInfo, string prefix, StringBuilder builder)
        {
            string returnType      = "Task";
            string returnTypeValue = "";

            if (methodInfo.ReturnTypeName != "void")
            {
                returnType      = "Task<" + methodInfo.ReturnTypeName + ">";
                returnTypeValue = "<" + methodInfo.ReturnTypeName + ">";
            }
            builder.AppendLine($"{prefix}public {returnType} {methodInfo.Name}Async({GenerateMethodParameters(methodInfo)})");
            builder.AppendLine($"{prefix}{{");
            builder.AppendLine($"{prefix + prefix}return SignalGo.Client.ClientManager.ConnectorExtensions.SendDataAsync{returnTypeValue}(CurrentProvider, ServiceName,\"{methodInfo.Name}\", new SignalGo.Shared.Models.ParameterInfo[]");
            builder.AppendLine($"{prefix + prefix}{{");
            GenerateHttpMethodParameters(methodInfo, prefix, builder, false);
            builder.AppendLine($"{prefix + prefix}}});");
            builder.AppendLine($"{prefix}}}");
        }
Ejemplo n.º 15
0
        private static void GenerateMethod(MethodReferenceInfo methodInfo, string prefix, StringBuilder builder)
        {
            builder.AppendLine($"{prefix}public {methodInfo.ReturnTypeName} {methodInfo.Name}({GenerateMethodParameters(methodInfo)})");
            builder.AppendLine($"{prefix}{{");
            string returnType  = methodInfo.ReturnTypeName;
            string returnValue = "return ";

            if (returnType == "void")
            {
                returnValue = "";
                returnType  = "object";
            }
            builder.AppendLine($"{prefix + prefix}{returnValue} SignalGo.Client.ClientManager.ConnectorExtensions.SendDataSync<{returnType}>(CurrentProvider, ServiceName,\"{methodInfo.Name}\", new SignalGo.Shared.Models.ParameterInfo[]");
            builder.AppendLine($"{prefix + prefix}{{");
            GenerateHttpMethodParameters(methodInfo, prefix, builder, false);
            builder.AppendLine($"{prefix + prefix}}});");
            builder.AppendLine($"{prefix}}}");
        }
Ejemplo n.º 16
0
        private string GenerateMethodParameters(MethodReferenceInfo methodInfo, string baseServiceName, Dictionary <string, Dictionary <string, string> > nameSpaces)
        {
            StringBuilder builder = new StringBuilder();
            int           index   = 0;

            foreach (ParameterReferenceInfo item in methodInfo.Parameters)
            {
                if (index > 0)
                {
                    builder.Append(", ");
                }
                string returnType = GetReturnTypeName(item.TypeName, baseServiceName, nameSpaces);
                //AddToDictionary(nameSpaces, returnType);
                builder.Append($"{item.Name}: {returnType}");
                index++;
            }
            return(builder.ToString());
        }
Ejemplo n.º 17
0
        private void GenerateMethod(MethodInfo methodInfo, ClassReferenceInfo classReferenceInfo)
        {
            if (methodInfo.GetParameters().Any(x => x.IsOut || x.IsRetval) || methodInfo.DeclaringType == typeof(object))
            {
                return;
            }
            if (IsRenameDuplicateMethodNames)
            {
                if (!ServiceMethods.ContainsKey(classReferenceInfo.Name))
                {
                    ServiceMethods[classReferenceInfo.Name] = new List <string>();
                }
            }
            MethodReferenceInfo methodReferenceInfo = new MethodReferenceInfo();

            AddToGenerate(methodInfo.ReturnType);
            string returnType = "void";

            if (methodInfo.ReturnType != typeof(void))
            {
                returnType = GetFullNameOfType(methodInfo.ReturnType, true);
            }
            string methodName = methodInfo.Name;

            if (IsRenameDuplicateMethodNames)
            {
                int i = 1;
                while (ServiceMethods[classReferenceInfo.Name].Contains(methodName))
                {
                    methodName = methodInfo.Name + i;
                    i++;
                }
            }
            methodReferenceInfo.ReturnTypeName = returnType;
            methodReferenceInfo.Name           = methodInfo.Name;
            methodReferenceInfo.DuplicateName  = methodName;
            if (IsRenameDuplicateMethodNames)
            {
                ServiceMethods[classReferenceInfo.Name].Add(methodName);
            }
            GenerateMethodParameters(methodInfo, methodReferenceInfo);
            classReferenceInfo.Methods.Add(methodReferenceInfo);
        }
Ejemplo n.º 18
0
        private static string GenerateMethodParameter(MethodReferenceInfo methodInfo)
        {
            StringBuilder rawBuilder = new StringBuilder();

            rawBuilder.Append("{\\n");
            bool isFirst = true;

            foreach (var parameter in methodInfo.Parameters)
            {
                if (!isFirst)
                {
                    rawBuilder.Append(",\\n");
                }

                rawBuilder.Append($"\\\"{parameter.Name}\\\" : null");
                isFirst = false;
            }
            rawBuilder.Append("\\n}");
            return(rawBuilder.ToString());
        }
Ejemplo n.º 19
0
        private void GenerateMethod(string serviceName, MethodReferenceInfo methodInfo, string prefix, StringBuilder resultBuilder, bool doSemicolon, string baseServiceName, Dictionary <string, Dictionary <string, string> > nameSpaces)
        {
            StringBuilder builder        = new StringBuilder();
            string        returnTypeName = GetReturnTypeName(methodInfo.ReturnTypeName, baseServiceName, nameSpaces);

            //AddToDictionary(nameSpaces, returnTypeName);
            if (returnTypeName == "SignalGo.Shared.Http.ActionResult")
            {
                return;
            }
            builder.AppendLine($"{prefix}{methodInfo.DuplicateName}({GenerateMethodParameters(methodInfo, baseServiceName, nameSpaces)}): Promise<{returnTypeName}> {{");
            builder.Append($@"return this.server.post<{returnTypeName}>('{serviceName}/{methodInfo.Name}',");
            int index = 0;

            if (methodInfo.Parameters.Count == 0)
            {
                builder.AppendLine("null");
            }
            else
            {
                builder.AppendLine(" {");
                foreach (ParameterReferenceInfo item in methodInfo.Parameters)
                {
                    if (index > 0)
                    {
                        builder.Append(", ");
                    }
                    builder.AppendLine(prefix + prefix + prefix + item.Name + ":" + item.Name);
                    index++;
                }
                builder.Append(prefix + prefix + "}");
            }
            builder.AppendLine(");");
            builder.AppendLine(prefix + "}");
            string result = builder.ToString();

            if (!result.Contains("SignalGo.Shared"))
            {
                resultBuilder.AppendLine(result);
            }
        }
Ejemplo n.º 20
0
 private static void GenerateHttpMethod(MethodReferenceInfo methodInfo, string serviceName, string prefix, StringBuilder builder, bool doSemicolon = true)
 {
     builder.AppendLine($"{prefix}public {methodInfo.ReturnTypeName} {methodInfo.Name}({GenerateMethodParameters(methodInfo)}){(doSemicolon ? ";" : "")}");
     //generate empty data
     if (!doSemicolon)
     {
         builder.AppendLine($"{prefix}{{");
         builder.AppendLine($"{prefix + prefix}SignalGo.Client.HttpClientResponse result = _httpClient.Post(_serverUrl + (_serverUrl.EndsWith(\"/\") ? \"\" : \"{"/"}\") + \"{serviceName}/{methodInfo.Name}\", new SignalGo.Shared.Models.ParameterInfo[]");
         builder.AppendLine($"{prefix + prefix}{{");
         GenerateHttpMethodParameters(methodInfo, prefix, builder, doSemicolon);
         builder.AppendLine($"{prefix + prefix}}});");
         builder.AppendLine($"{prefix + prefix}ResponseHeaders = result.ResponseHeaders;");
         builder.AppendLine($"{prefix + prefix}Status = result.Status;");
         builder.AppendLine($"{prefix + prefix}if (Status == System.Net.HttpStatusCode.InternalServerError)");
         builder.AppendLine($"{prefix + prefix + prefix}throw new Exception(result.Data);");
         if (methodInfo.ReturnTypeName != "void")
         {
             builder.AppendLine($"{prefix + prefix}return SignalGo.Client.ClientSerializationHelper.DeserializeObject<{methodInfo.ReturnTypeName}>(result.Data);");
         }
         builder.AppendLine($"{prefix}}}");
     }
 }
Ejemplo n.º 21
0
        private void GenerateMethod(List <ClassReferenceInfo> models, string serviceName, MethodReferenceInfo methodInfo, string prefix, StringBuilder resultBuilder, bool doSemicolon, string baseServiceName, Dictionary <string, Dictionary <string, string> > nameSpaces)
        {
            bool isStream = false;

            if (methodInfo.Parameters.Any(x => x.TypeName.StartsWith("SignalGo.Shared.Models.StreamInfo")))
            {
                isStream = true;
            }
            StringBuilder builder        = new StringBuilder();
            string        returnTypeName = GetReturnTypeName(methodInfo.ReturnTypeName, baseServiceName, nameSpaces);

            //AddToDictionary(nameSpaces, returnTypeName);
            if (returnTypeName == "SignalGo.Shared.Http.ActionResult")
            {
                return;
            }
            builder.AppendLine($"{prefix}{methodInfo.DuplicateName.ToCamelCase()}({GenerateMethodParameters(methodInfo, baseServiceName, nameSpaces, isStream)}): Observable<{returnTypeName}> {{");

            //return type without Generic
            builder.AppendLine($"var result = new {returnTypeName}();");
            //var findModel = models.FirstOrDefault(x => x.Name == returnTypeName);
            if (returnTypeName.EndsWith(">"))
            {
                string text = returnTypeName.Substring(returnTypeName.IndexOf('<'));
                text = text.Substring(1, text.LastIndexOf('>') - 1);
                if (text.EndsWith("[]"))
                {
                    //builder.AppendLine($"result.result = new {text.Substring(0, text.Length - 1)}0];");
                    builder.AppendLine($"result.result = [];");
                }
                else
                {
                    if (text == "string")
                    {
                        builder.AppendLine($"result.result = \"\";");
                    }
                    else if (text == "boolean")
                    {
                        builder.AppendLine($"result.result = false;");
                    }
                    else if (text == "number")
                    {
                        builder.AppendLine($"result.result = 0;");
                    }
                    else
                    {
                        builder.AppendLine($"result.result = new {text}();");
                    }
                }
            }
            if (isStream)
            {
                builder.Append($@"return this.server.postFile<{returnTypeName}>('{serviceName}/{methodInfo.GetMethodName()}',");
            }
            else
            {
                if (methodInfo.ProtocolType == ProtocolType.HttpGet)
                {
                    builder.Append($@"return this.server.get<{returnTypeName}>('{serviceName}/{methodInfo.GetMethodName()}',");
                }
                else
                {
                    builder.Append($@"return this.server.post<{returnTypeName}>('{serviceName}/{methodInfo.GetMethodName()}',");
                }
            }

            int index = 0;

            if (methodInfo.Parameters.Count == 0)
            {
                builder.AppendLine("null");
            }
            else if (isStream)
            {
                builder.AppendLine("params");
                foreach (ParameterReferenceInfo item in methodInfo.Parameters)
                {
                    if (item.TypeName.StartsWith("SignalGo.Shared.Models.StreamInfo"))
                    {
                        continue;
                    }
                    builder.Append(", ");
                    builder.AppendLine(prefix + prefix + prefix + $"{{ Name: \"{item.Name}\", Value: {item.Name} }}");
                    index++;
                }
            }
            else
            {
                builder.AppendLine(" {");
                foreach (ParameterReferenceInfo item in methodInfo.Parameters)
                {
                    if (index > 0)
                    {
                        builder.Append(", ");
                    }
                    builder.AppendLine(prefix + prefix + prefix + item.Name + ":" + item.Name);
                    index++;
                }
                builder.Append(prefix + prefix + "}");
            }
            builder.AppendLine($",result,\"{baseServiceName}\"");
            builder.AppendLine(");");
            builder.AppendLine(prefix + "}");
            string result = builder.ToString();

            if (!result.Contains("SignalGo.Shared"))
            {
                resultBuilder.AppendLine(result);
            }
        }
Ejemplo n.º 22
0
 private static void GenerateInterfaceMethod(MethodReferenceInfo methodInfo, string prefix, StringBuilder builder)
 {
     builder.AppendLine($"{prefix}{methodInfo.ReturnTypeName} {methodInfo.Name}({GenerateMethodParameters(methodInfo)});");
 }