Ejemplo n.º 1
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.º 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.GetMethodName()}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.GetMethodName()}\", 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 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.GetMethodName()}',");
            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.º 4
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);
            }
        }