Skip to content

Commit

Permalink
Simplify deserializers in generated code
Browse files Browse the repository at this point in the history
  • Loading branch information
samwelkanda committed May 25, 2022
1 parent 1ff417a commit 57ef36f
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 2 deletions.
6 changes: 5 additions & 1 deletion src/Kiota.Builder/Refiners/PythonRefiner.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public override void Refine(CodeNamespace generatedCode)
CorrectCoreTypesForBackingStore(generatedCode, "BackingStoreFactorySingleton.__instance.create_backing_store()");
AddPropertiesAndMethodTypesImports(generatedCode, true, true, true);
AddParsableImplementsForModelClasses(generatedCode, "Parsable");
ReplaceBinaryByNativeType(generatedCode, "bytes",null, true);
ReplaceBinaryByNativeType(generatedCode, "bytes",null);
ReplaceReservedNames(generatedCode, new PythonReservedNamesProvider(), x => $"{x}_escaped");
AddGetterAndSetterMethods(generatedCode,
new() {
Expand Down Expand Up @@ -47,6 +47,9 @@ public override void Refine(CodeNamespace generatedCode)
"ApiError",
"kiota.abstractions"
);
AddQueryParameterMapperMethod(
generatedCode
);
}

private const string AbstractionsPackageName = "kiota.abstractions";
Expand Down Expand Up @@ -103,6 +106,7 @@ private static void CorrectMethodType(CodeMethod currentMethod) {
if(currentMethod.IsOfKind(CodeMethodKind.RequestExecutor))
currentMethod.Parameters.Where(x => x.IsOfKind(CodeParameterKind.ResponseHandler) && x.Type.Name.StartsWith("i", StringComparison.OrdinalIgnoreCase)).ToList().ForEach(x => x.Type.Name = x.Type.Name[1..]);
currentMethod.Parameters.Where(x => x.IsOfKind(CodeParameterKind.Options)).ToList().ForEach(x => x.Type.Name = "List[RequestOption]");
currentMethod.Parameters.Where(x => x.IsOfKind(CodeParameterKind.QueryParameter)).ToList().ForEach(x => { x.Type.Name = "GetQueryParameters"; x.Type.ActionOf = false; });
currentMethod.Parameters.Where(x => x.IsOfKind(CodeParameterKind.Headers)).ToList().ForEach(x => { x.Type.Name = "Dict[str, str]"; x.Type.ActionOf = false; });
}
else if(currentMethod.IsOfKind(CodeMethodKind.Serializer))
Expand Down
8 changes: 7 additions & 1 deletion src/Kiota.Builder/Writers/Python/CodeMethodWriter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ private void WriteDeserializerBody(CodeMethod codeElement, CodeClass parentClass
writer.WriteLine("return {");
writer.IncreaseIndent();
foreach(var otherProp in parentClass.GetPropertiesOfKind(CodePropertyKind.Custom)) {
writer.WriteLine($"\"{otherProp.SerializationName ?? otherProp.Name.ToSnakeCase()}\": lambda o,n : o.set_{otherProp.Name.ToSnakeCase()}(n.{GetDeserializationMethodName(otherProp.Type)}),");
writer.WriteLine($"\"{otherProp.SerializationName ?? otherProp.Name.ToSnakeCase()}\": lambda n : self.set_{otherProp.Name.ToSnakeCase()}(n.{GetDeserializationMethodName(otherProp.Type)}),");
}
writer.DecreaseIndent();
writer.WriteLine($"}}{(inherits? $".update(super().{codeElement.Name.ToSnakeCase()}())": string.Empty)}");
Expand Down Expand Up @@ -262,10 +262,16 @@ private void WriteRequestGeneratorBody(CodeMethod codeElement, RequestParams req
$"{RequestInfoVarName}.path_parameters = {GetPropertyCall(urlTemplateParamsProperty, "''")}",
$"{RequestInfoVarName}.http_method = HttpMethod.{codeElement.HttpMethod.ToString().ToUpperInvariant()}");
if(requestParams.headers != null) {
writer.WriteLine($"if {requestParams.headers.Name}:");
writer.IncreaseIndent();
writer.WriteLine($"{RequestInfoVarName}.headers = {requestParams.headers.Name.ToSnakeCase()}");
writer.DecreaseIndent();
}
if(requestParams.queryString != null){
writer.WriteLine($"if {requestParams.queryString.Name}:");
writer.IncreaseIndent();
writer.WriteLine($"{RequestInfoVarName}.set_query_string_parameters_from_raw_object({requestParams.queryString.Name.ToSnakeCase()})");
writer.DecreaseIndent();
}
if(requestParams.requestBody != null) {
if(requestParams.requestBody.Type.Name.Equals(localConventions.StreamTypeName, StringComparison.OrdinalIgnoreCase))
Expand Down

0 comments on commit 57ef36f

Please sign in to comment.