|
|
|
@ -57,9 +57,19 @@ namespace Volo.Abp.Cli.Commands
|
|
|
|
|
var uiFramework = GetUiFramework(commandLineArgs);
|
|
|
|
|
|
|
|
|
|
WebClient client = new WebClient();
|
|
|
|
|
string json = client.DownloadString(apiUrl);
|
|
|
|
|
//var sr = File.OpenText("api-definition.json");
|
|
|
|
|
//var json = sr.ReadToEnd();
|
|
|
|
|
string json = "";
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
json = client.DownloadString(apiUrl);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
throw new CliUsageException(
|
|
|
|
|
"Cannot connect to the host {" + apiUrl + "}! Check that the host is up and running." +
|
|
|
|
|
Environment.NewLine + Environment.NewLine +
|
|
|
|
|
GetUsageInfo()
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Logger.LogInformation("Downloading api definition...");
|
|
|
|
|
Logger.LogInformation("Api Url: " + apiUrl);
|
|
|
|
@ -107,7 +117,7 @@ namespace Volo.Abp.Cli.Commands
|
|
|
|
|
serviceFileText.AppendLine("");
|
|
|
|
|
serviceFileText.AppendLine("@Injectable({providedIn: 'root'})");
|
|
|
|
|
serviceFileText.AppendLine("export class [controllerName]Service {");
|
|
|
|
|
serviceFileText.AppendLine(" apiName = '"+ apiName + "';");
|
|
|
|
|
serviceFileText.AppendLine(" apiName = '" + apiName + "';");
|
|
|
|
|
serviceFileText.AppendLine("");
|
|
|
|
|
serviceFileText.AppendLine(" constructor(private restService: RestService) {}");
|
|
|
|
|
serviceFileText.AppendLine("");
|
|
|
|
@ -125,7 +135,7 @@ namespace Volo.Abp.Cli.Commands
|
|
|
|
|
|
|
|
|
|
actionName = (char.ToLower(actionName[0]) + actionName.Substring(1)).Replace("Async", "").Replace("Controller", "");
|
|
|
|
|
|
|
|
|
|
var returnValueType = (string)action["returnValue"]["type"];
|
|
|
|
|
var returnValueType = (string)action["returnValue"]["type"];
|
|
|
|
|
|
|
|
|
|
var parameters = action["parameters"];
|
|
|
|
|
var parametersText = new StringBuilder();
|
|
|
|
@ -140,7 +150,7 @@ namespace Volo.Abp.Cli.Commands
|
|
|
|
|
var bindingSourceId = (string)parameter["bindingSourceId"];
|
|
|
|
|
bindingSourceId = char.ToLower(bindingSourceId[0]) + bindingSourceId.Substring(1);
|
|
|
|
|
|
|
|
|
|
var name = (string)parameter["name"];
|
|
|
|
|
var name = (string)parameter["name"];
|
|
|
|
|
var typeSimple = (string)parameter["typeSimple"];
|
|
|
|
|
var typeArray = ((string)parameter["type"]).Split(".");
|
|
|
|
|
var type = (typeArray[typeArray.Length - 1]).TrimEnd('>');
|
|
|
|
@ -201,7 +211,8 @@ namespace Volo.Abp.Cli.Commands
|
|
|
|
|
{
|
|
|
|
|
secondTypeList.Add(type);
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
firstTypeList.Add(type);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
@ -217,7 +228,7 @@ namespace Volo.Abp.Cli.Commands
|
|
|
|
|
var parameterItemModelPath = $"src/app/{rootPath}/shared/models/{parameterItemModelName}";
|
|
|
|
|
if (parameterItem.BindingSourceId == "body" && !File.Exists(parameterItemModelPath))
|
|
|
|
|
{
|
|
|
|
|
parameterItem.Type = "any";
|
|
|
|
|
parameterItem.Type = "any";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
parametersIndex++;
|
|
|
|
@ -248,7 +259,7 @@ namespace Volo.Abp.Cli.Commands
|
|
|
|
|
var firstType = firstTypeArray[firstTypeArray.Length - 1];
|
|
|
|
|
|
|
|
|
|
var secondTypeArray = returnValueType.Split("<")[1].Split(".");
|
|
|
|
|
var secondType = secondTypeArray[secondTypeArray.Length - 1].TrimEnd('>');
|
|
|
|
|
var secondType = secondTypeArray[secondTypeArray.Length - 1].TrimEnd('>');
|
|
|
|
|
|
|
|
|
|
var secondTypeModelName = secondType.PascalToKebabCase() + ".ts";
|
|
|
|
|
var secondTypeModelPath = $"src/app/{rootPath}/shared/models/{secondTypeModelName}";
|
|
|
|
@ -405,7 +416,7 @@ namespace Volo.Abp.Cli.Commands
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static string CreateType(JObject data, string returnValueType, string rootPath, List<string> modelIndexList)
|
|
|
|
|
{
|
|
|
|
|
{
|
|
|
|
|
var type = data["types"][returnValueType];
|
|
|
|
|
|
|
|
|
|
if (type == null)
|
|
|
|
@ -435,9 +446,9 @@ namespace Volo.Abp.Cli.Commands
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var typeModelName = typeName.Replace("<", "").Replace(">", "").Replace("?","").PascalToKebabCase() + ".ts";
|
|
|
|
|
var typeModelName = typeName.Replace("<", "").Replace(">", "").Replace("?", "").PascalToKebabCase() + ".ts";
|
|
|
|
|
|
|
|
|
|
var path = $"src/app/{rootPath}/shared/models/{typeModelName}";
|
|
|
|
|
var path = $"src/app/{rootPath}/shared/models/{typeModelName}";
|
|
|
|
|
|
|
|
|
|
var modelFileText = new StringBuilder();
|
|
|
|
|
|
|
|
|
@ -474,7 +485,7 @@ namespace Volo.Abp.Cli.Commands
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(modelIndex))
|
|
|
|
|
{
|
|
|
|
|
modelIndexList.Add(modelIndex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -501,7 +512,7 @@ namespace Volo.Abp.Cli.Commands
|
|
|
|
|
{
|
|
|
|
|
var propertyName = (string)property["name"];
|
|
|
|
|
propertyName = (char.ToLower(propertyName[0]) + propertyName.Substring(1));
|
|
|
|
|
var typeSimple = (string)property["typeSimple"];
|
|
|
|
|
var typeSimple = (string)property["typeSimple"];
|
|
|
|
|
|
|
|
|
|
var modelIndex = CreateType(data, (string)property["type"], rootPath, modelIndexList);
|
|
|
|
|
|
|
|
|
@ -536,11 +547,11 @@ namespace Volo.Abp.Cli.Commands
|
|
|
|
|
)
|
|
|
|
|
{
|
|
|
|
|
var typeSimpleModelName = typeSimple.PascalToKebabCase() + ".ts";
|
|
|
|
|
var modelPath = $"src/app/{rootPath}/shared/models/{typeSimpleModelName}";
|
|
|
|
|
var modelPath = $"src/app/{rootPath}/shared/models/{typeSimpleModelName}";
|
|
|
|
|
if (!File.Exists(modelPath))
|
|
|
|
|
{
|
|
|
|
|
typeSimple = "any" + (typeSimple.Contains("[]") ? "[]" : "");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (propertyList.Any(p => p.Key == baseTypeName && p.Value.Any(q => q.Key == propertyName && q.Value == typeSimple)))
|
|
|
|
|