public string GetDeserializationString(IModelType type, string valueReference = "result", string responseVariable = "parsedResponse") { TSBuilder builder = new TSBuilder(); if (type is CompositeType) { builder.Line($"const resultMapper = Mappers.{type.Name};"); } else { builder.Text($"const resultMapper = "); ClientModelExtensions.ConstructMapper(builder, type, responseVariable, null, isPageable: false, expandComposite: false, isXML: CodeModel?.ShouldGenerateXmlSerialization == true); builder.Line(";"); } if (CodeModel.ShouldGenerateXmlSerialization && type is SequenceType st) { builder.Line("{2} = client.serializer.deserialize(resultMapper, typeof {0} === 'object' ? {0}['{1}'] : [], '{2}');", responseVariable, st.ElementType.XmlName, valueReference); } else { builder.Line("{1} = client.serializer.deserialize(resultMapper, {0}, '{1}');", responseVariable, valueReference); } return(builder.ToString()); }
public virtual string ConstructModelMapper() { var modelMapper = ClientModelExtensions.ConstructMapper(this, SerializedName, null, false, true); var builder = new IndentedStringBuilder(" "); builder.AppendLine("return {{{0}}};", modelMapper); return(builder.ToString()); }
public override string ConstructModelMapper() { TSBuilder builder = new TSBuilder(); builder.Text($"export const {Name} = "); ClientModelExtensions.ConstructMapper(builder, this, SerializedName, null, isPageable: true, expandComposite: true, isXML: CodeModel?.ShouldGenerateXmlSerialization == true); builder.Line(";"); return(builder.ToString()); }
public virtual void ConstructModelMapper(TSBuilder builder) { builder.Text($"export const {Name}: coreHttp.CompositeMapper = "); bool isHeaders = CodeModel.HeaderTypes.Contains(this) == true; bool isXML = !isHeaders && CodeModel.ShouldGenerateXmlSerialization == true; ClientModelExtensions.ConstructMapper(builder, this, SerializedName, null, isPageable: false, expandComposite: true, isXML: isXML, isCaseSensitive: !isHeaders, xmlName: isXML ? XmlName : null); builder.Line(";"); }
public virtual string ConstructModelMapper() { TSBuilder builder = new TSBuilder(); builder.Text($"export const {Name} = "); bool isXML = CodeModel?.ShouldGenerateXmlSerialization == true; ClientModelExtensions.ConstructMapper(builder, this, SerializedName, null, isPageable: false, expandComposite: true, isXML: isXML, isCaseSensitive: CodeModel?.HeaderTypes.Contains(this) != true, xmlName: isXML ? XmlName : null); builder.Line(";"); return(builder.ToString()); }
public void DeserializeResponse(TSBlock block, IModelType type) { if (type == null) { throw new ArgumentNullException(nameof(type)); } const string responseVariable = "parsedResponse"; const string valueReference = "operationRes.parsedBody"; block.Line($"let {responseVariable} = {valueReference} as {{ [key: string]: any }};"); block.If($"{responseVariable} != undefined", ifBlock => { ifBlock.Try(tryBlock => { tryBlock.ConstObjectVariable("serializer", CodeModel.CreateSerializerExpression()); tryBlock.Text($"{valueReference} = "); tryBlock.FunctionCall("serializer.deserialize", argumentList => { string expressionToDeserialize = responseVariable; if (type is CompositeType) { argumentList.Text($"Mappers.{type.Name}"); } else { bool isXml = CodeModel?.ShouldGenerateXmlSerialization == true; if (isXml && type is SequenceType st) { expressionToDeserialize = $"typeof {responseVariable} === \"object\" ? {responseVariable}[\"{st.ElementType.XmlName}\"] : []"; } ClientModelExtensions.ConstructMapper(argumentList, type, responseVariable, null, isPageable: false, expandComposite: false, isXML: isXml); } argumentList.Text(expressionToDeserialize); argumentList.QuotedString(valueReference); }); }) .Catch("error", catchBlock => { string errorVariable = this.GetUniqueName("deserializationError"); catchBlock.Line($"const {errorVariable} = new msRest.RestError(`Error ${{error}} occurred in deserializing the responseBody - ${{operationRes.bodyAsText}}`);"); catchBlock.Line($"{errorVariable}.request = msRest.stripRequest(httpRequest);"); catchBlock.Line($"{errorVariable}.response = msRest.stripResponse(operationRes);"); catchBlock.Throw(errorVariable); }); });
public string GetDeserializationString(IModelType type, string valueReference = "result", string responseVariable = "parsedResponse") { var builder = new IndentedStringBuilder(" "); if (type is CompositeType) { builder.AppendLine("let resultMapper = new client.models['{0}']().mapper();", type.Name); } else { builder.AppendLine("let resultMapper = {{{0}}};", ClientModelExtensions.ConstructMapper(type, responseVariable, null, false, false)); } builder.AppendLine("{1} = client.deserialize(resultMapper, {0}, '{1}');", responseVariable, valueReference); return(builder.ToString()); }
private static void GenerateParameters(TSObject operationSpec, string propertyName, IEnumerable <Parameter> parameters, Action <TSObject, Parameter> extraParameterProperties = null) { if (parameters != null && parameters.Any()) { operationSpec.ArrayProperty(propertyName, parameterArray => { foreach (ParameterTS parameter in parameters) { parameterArray.Object(parameterObject => { parameterObject.QuotedStringProperty("parameterName", parameter.Name); extraParameterProperties?.Invoke(parameterObject, parameter); parameterObject.Property("mapper", mapper => ClientModelExtensions.ConstructMapper(mapper, parameter.ModelType, parameter.SerializedName, parameter, false, false, false)); }); } }); } }
internal static void GenerateRequestParameter(TSObject parameterObject, ParameterTS requestParameter, ParameterTransformations parameterTransformations) { GenerateRequestParameterPath(parameterObject, requestParameter, parameterTransformations); parameterObject.Property("mapper", mapper => ClientModelExtensions.ConstructMapper(mapper, requestParameter.ModelType, requestParameter.SerializedName, requestParameter, false, false, false)); ParameterLocation location = requestParameter.Location; if (location == ParameterLocation.Path || location == ParameterLocation.Query) { AddSkipEncodingProperty(parameterObject, requestParameter); } if (location == ParameterLocation.Query) { if (requestParameter.CollectionFormat != CollectionFormat.None) { parameterObject.TextProperty("collectionFormat", $"msRest.QueryCollectionFormat.{requestParameter.CollectionFormat}"); } } }
public override void ConstructModelMapper(TSBuilder builder) { builder.Text($"export const {Name}: msRest.CompositeMapper = "); ClientModelExtensions.ConstructMapper(builder, this, SerializedName, null, isPageable: true, expandComposite: true, isXML: CodeModel?.ShouldGenerateXmlSerialization == true); builder.Line(";"); }