Skip to content

Commit

Permalink
Merge pull request #1257 from microsoft/fix/add_path_parameters_to_re…
Browse files Browse the repository at this point in the history
…quest

Add path parameters to request information
  • Loading branch information
calebkiage authored Feb 23, 2022
2 parents 7e7ea2d + bc5b9d1 commit 877a22a
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 3 deletions.
23 changes: 20 additions & 3 deletions src/Kiota.Builder/Writers/Shell/ShellCodeMethodWriter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -136,8 +136,28 @@ private void WriteExecutableCommand(CodeMethod codeElement, RequestParams reques
var (paramType, paramName) = zipped[i];
writer.WriteLine($"var {paramName} = ({paramType}) parameters[{i}];");
}
var pathParams = parametersList.Where(p => p.IsOfKind(CodeParameterKind.Path)).Select(p => p.Name);
var pathParamsProp = (codeElement.Parent as CodeClass)?.GetPropertyOfKind(CodePropertyKind.PathParameters);
if (pathParamsProp != null && pathParams.Any())
{
var pathParamsPropName = pathParamsProp.Name.ToFirstCharacterUpperCase();
writer.WriteLine($"{pathParamsPropName}.Clear();");
foreach (var p in pathParams)
{
writer.WriteLine($"{pathParamsPropName}.Add(\"{p}\", {NormalizeToIdentifier(p)});");
}
}

WriteCommandHandlerBody(originalMethod, requestParams, isHandlerVoid, returnType, writer);
// Get request generator method. To call it + get path & query parameters see WriteRequestExecutorBody in CSharp
WriteCommandHandlerBodyOutput(writer, originalMethod, isHandlerVoid);
writer.DecreaseIndent();
writer.WriteLine($"}}, new CollectionBinding({string.Join(", ", availableOptions)}));");
writer.WriteLine("return command;");
}

private void WriteCommandHandlerBodyOutput(LanguageWriter writer, CodeMethod originalMethod, bool isHandlerVoid)
{
if (isHandlerVoid)
{
writer.WriteLine($"Console.WriteLine(\"Success\");");
Expand Down Expand Up @@ -167,9 +187,6 @@ private void WriteExecutableCommand(CodeMethod codeElement, RequestParams reques
writer.CloseBlock();
}
}
writer.DecreaseIndent();
writer.WriteLine($"}}, new CollectionBinding({string.Join(", ", availableOptions)}));");
writer.WriteLine("return command;");
}

private List<string> WriteExecutableCommandOptions(LanguageWriter writer, List<CodeParameter> parametersList)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,8 @@ public void WritesExecutableCommandForGetRequest() {
Assert.Contains("command.AddOption(outputOption);", result);
Assert.Contains("command.SetHandler(async (object[] parameters) => {", result);
Assert.Contains("var q = (string) parameters[0];", result);
Assert.Contains("PathParameters.Clear();", result);
Assert.Contains("PathParameters.Add(\"p\", p);", result);
Assert.Contains("var requestInfo = CreateGetRequestInformation", result);
Assert.Contains("var response = await RequestAdapter.SendPrimitiveAsync<Stream>(requestInfo, errorMapping: default, cancellationToken: cancellationToken);", result);
Assert.Contains("}, new CollectionBinding(qOption,", result);
Expand Down Expand Up @@ -303,6 +305,8 @@ public void WritesExecutableCommandForPostRequest() {
Assert.Contains("bodyOption.IsRequired = true;", result);
Assert.Contains("command.AddOption(bodyOption);", result);
Assert.Contains("command.AddOption(outputOption);", result);
Assert.Contains("PathParameters.Clear();", result);
Assert.Contains("PathParameters.Add(\"p\", p);", result);
Assert.Contains("var requestInfo = CreatePostRequestInformation", result);
Assert.Contains("var response = await RequestAdapter.SendPrimitiveAsync<Stream>(requestInfo, errorMapping: default, cancellationToken: cancellationToken);", result);
Assert.Contains("return command;", result);
Expand Down Expand Up @@ -351,6 +355,8 @@ public void WritesExecutableCommandForGetStreamRequest()
Assert.Contains("command.AddOption(fileOption);", result);
Assert.Contains("command.SetHandler(async (object[] parameters) => {", result);
Assert.Contains("var q = (string) parameters[0];", result);
Assert.Contains("PathParameters.Clear();", result);
Assert.Contains("PathParameters.Add(\"p\", p);", result);
Assert.Contains("var requestInfo = CreateGetRequestInformation", result);
Assert.Contains("var response = await RequestAdapter.SendPrimitiveAsync<Stream>(requestInfo, errorMapping: default, cancellationToken: cancellationToken);", result);
Assert.Contains("}, new CollectionBinding(qOption,", result);
Expand Down Expand Up @@ -401,6 +407,8 @@ public void WritesExecutableCommandForPostVoidRequest() {
Assert.Contains("var bodyOption = new Option<string>(\"--body\")", result);
Assert.Contains("bodyOption.IsRequired = true;", result);
Assert.Contains("command.AddOption(bodyOption);", result);
Assert.Contains("PathParameters.Clear();", result);
Assert.Contains("PathParameters.Add(\"p\", p);", result);
Assert.Contains("var requestInfo = CreatePostRequestInformation", result);
Assert.Contains("await RequestAdapter.SendNoContentAsync(requestInfo, errorMapping: default, cancellationToken: cancellationToken);", result);
Assert.Contains("Console.WriteLine(\"Success\");", result);
Expand Down

0 comments on commit 877a22a

Please sign in to comment.