// ------------------------------------------------------------------------------ // <auto-generated> // This code was generated by a tool. // Runtime Version: 16.0.0.0 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // </auto-generated> // ------------------------------------------------------------------------------ namespace ServiceClientGenerator.Generators.Marshallers { using System.Linq; using System.Text; using System.Collections.Generic; using System; /// <summary> /// Class to produce the template output /// </summary> #line 1 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.TextTemplating", "16.0.0.0")] public partial class JsonRPCResponseUnmarshaller : BaseResponseUnmarshaller { #line hidden /// <summary> /// Create the template output /// </summary> public override string TransformText() { #line 6 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" AddLicenseHeader(); AddCommonUsingStatements(); #line default #line hidden this.Write("using ThirdParty.Json.LitJson;\r\n\r\nnamespace "); #line 13 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" this.Write(this.ToStringHelper.ToStringWithCulture(this.Config.Namespace)); #line default #line hidden this.Write(".Model.Internal.MarshallTransformations\r\n{\r\n /// <summary>\r\n /// Response U" + "nmarshaller for "); #line 16 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" this.Write(this.ToStringHelper.ToStringWithCulture(this.UnmarshallerBaseName)); #line default #line hidden this.Write(" operation\r\n /// </summary> \r\n public class "); #line 18 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" this.Write(this.ToStringHelper.ToStringWithCulture(this.UnmarshallerBaseName)); #line default #line hidden this.Write(@"ResponseUnmarshaller : JsonResponseUnmarshaller { /// <summary> /// Unmarshaller the response from the service to the response class. /// </summary> /// <param name=""context""></param> /// <returns></returns> public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context) { "); #line 27 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" this.Write(this.ToStringHelper.ToStringWithCulture(this.UnmarshallerBaseName)); #line default #line hidden this.Write("Response response = new "); #line 27 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" this.Write(this.ToStringHelper.ToStringWithCulture(this.Operation.Name)); #line default #line hidden this.Write("Response();\r\n\r\n"); #line 29 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" var payload = this.Operation.ResponsePayloadMember; var unmarshallPayload = payload != null && payload.IsStructure; var payloadIsStream = payload != null && !unmarshallPayload; bool isEventStreamOutput = this.Operation.IsEventStreamOutput; if (this.Operation.ResponseHasBodyMembers || payload != null) { if (this.Operation.AllowEmptyResult) { throw new NotImplementedException("AllowEmptyResult is not implemented for JSON unmarshallers"); } if (isEventStreamOutput) { #line default #line hidden this.Write(" response."); #line 43 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" this.Write(this.ToStringHelper.ToStringWithCulture(payload.PropertyName)); #line default #line hidden this.Write(" = new "); #line 43 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" this.Write(this.ToStringHelper.ToStringWithCulture(payload.Shape.Name)); #line default #line hidden this.Write("(context.Stream);\r\n"); #line 44 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" } else if (payloadIsStream) { if (payload.IsStreaming) { #line default #line hidden this.Write(" response."); #line 51 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" this.Write(this.ToStringHelper.ToStringWithCulture(payload.PropertyName)); #line default #line hidden this.Write(" = context.Stream;\r\n"); #line 52 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" } else if (payload.ModelShape.IsString) { #line default #line hidden this.Write(" using (var sr = new StreamReader(context.Stream))\r\n {\r\n " + " response."); #line 59 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" this.Write(this.ToStringHelper.ToStringWithCulture(payload.PropertyName)); #line default #line hidden this.Write(" = sr.ReadToEnd();\r\n }\r\n"); #line 61 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" } else if (payload.ModelShape.IsMemoryStream) { #line default #line hidden this.Write(" var ms = new MemoryStream();\r\n Amazon.Util.AWSSDKUtils.Cop" + "yStream(context.Stream, ms);\r\n ms.Seek(0, SeekOrigin.Begin);\r\n " + " response."); #line 69 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" this.Write(this.ToStringHelper.ToStringWithCulture(payload.PropertyName)); #line default #line hidden this.Write(" = ms;\r\n"); #line 70 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" } else { // At this point, all valid configurations have been handled. Valid use of payload is defined: // https://awslabs.github.io/smithy/1.0/spec/core/http-traits.html#httppayload-trait throw new Exception( $"{payload.PropertyName} can not be a Payload as Type {payload.Shape.Type} is not a valid target for the httpPayload trait. " + "The httpPayload trait can be applied to structure members that target a string, blob, structure, union, document, set, map, or list."); } } else if (unmarshallPayload) { #line default #line hidden this.Write(" var unmarshaller = "); #line 84 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" this.Write(this.ToStringHelper.ToStringWithCulture(payload.DetermineTypeUnmarshallerInstantiate())); #line default #line hidden this.Write(";\r\n response."); #line 85 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" this.Write(this.ToStringHelper.ToStringWithCulture(payload.PropertyName)); #line default #line hidden this.Write(" = unmarshaller.Unmarshall(context);\r\n"); #line 86 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" } else if (this.IsWrapped) { #line default #line hidden this.Write("\t\t\tresponse."); #line 91 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" this.Write(this.ToStringHelper.ToStringWithCulture(this.WrappedResultMember)); #line default #line hidden this.Write(" = "); #line 91 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" this.Write(this.ToStringHelper.ToStringWithCulture(this.Structure.Name)); #line default #line hidden this.Write("Unmarshaller.Instance.Unmarshall(context);\r\n"); #line 92 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" } else { #line default #line hidden this.Write(" context.Read();\r\n int targetDepth = context.CurrentDepth;\r" + "\n while (context.ReadAtDepth(targetDepth))\r\n {\r\n"); #line 101 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" foreach (var member in this.Operation.ResponseBodyMembers) { #line default #line hidden this.Write(" if (context.TestExpression(\""); #line 106 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" this.Write(this.ToStringHelper.ToStringWithCulture(member.MarshallName)); #line default #line hidden this.Write("\", targetDepth))\r\n {\r\n var unmarshaller = "); #line 108 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" this.Write(this.ToStringHelper.ToStringWithCulture(member.DetermineTypeUnmarshallerInstantiate())); #line default #line hidden this.Write(";\r\n response."); #line 109 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" this.Write(this.ToStringHelper.ToStringWithCulture(member.PropertyName)); #line default #line hidden this.Write(" = unmarshaller.Unmarshall(context);\r\n continue;\r\n " + " }\r\n"); #line 112 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" } #line default #line hidden this.Write(" }\r\n"); #line 116 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" } } UnmarshallHeaders(); ProcessStatusCode(); #line default #line hidden this.Write(@" return response; } /// <summary> /// Unmarshaller error response to exception. /// </summary> /// <param name=""context""></param> /// <param name=""innerException""></param> /// <param name=""statusCode""></param> /// <returns></returns> public override AmazonServiceException UnmarshallException(JsonUnmarshallerContext context, Exception innerException, HttpStatusCode statusCode) { var errorResponse = JsonErrorResponseUnmarshaller.GetInstance().Unmarshall(context); errorResponse.InnerException = innerException; errorResponse.StatusCode = statusCode; var responseBodyBytes = context.GetResponseBodyBytes(); using (var streamCopy = new MemoryStream(responseBodyBytes)) "); #line 142 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" if (this.Config.ServiceModel.IsAwsQueryCompatible) { #line default #line hidden #line 146 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" // Create a copy of context with headers in the response #line default #line hidden this.Write("\r\n using (var contextCopy = new JsonUnmarshallerContext(streamCopy, tr" + "ue, context.ResponseData))\r\n"); #line 149 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" } else { #line default #line hidden this.Write(" using (var contextCopy = new JsonUnmarshallerContext(streamCopy, fals" + "e, null))\r\n"); #line 155 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" } #line default #line hidden this.Write(" {\r\n"); #line 159 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" foreach (var exception in this.Operation.Exceptions) { #line default #line hidden this.Write(" if (errorResponse.Code != null && errorResponse.Code.Equals(\""); #line 163 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" this.Write(this.ToStringHelper.ToStringWithCulture(exception.Code)); #line default #line hidden this.Write("\"))\r\n {\r\n return "); #line 165 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" this.Write(this.ToStringHelper.ToStringWithCulture(exception.Name)); #line default #line hidden this.Write("Unmarshaller.Instance.Unmarshall(contextCopy, errorResponse);\r\n }\r" + "\n"); #line 167 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" } #line default #line hidden this.Write(" }\r\n"); #line 171 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" if (this.Config.ServiceModel.IsAwsQueryCompatible) { GenerateAWSQueryCompatibleBlock(); #line default #line hidden this.Write(" return new "); #line 176 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" this.Write(this.ToStringHelper.ToStringWithCulture(this.BaseException)); #line default #line hidden this.Write("(errorResponse.Message, errorResponse.InnerException, errorType, errorCode, error" + "Response.RequestId, errorResponse.StatusCode);\r\n"); #line 177 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" } else { #line default #line hidden this.Write(" return new "); #line 182 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" this.Write(this.ToStringHelper.ToStringWithCulture(this.BaseException)); #line default #line hidden this.Write("(errorResponse.Message, errorResponse.InnerException, errorResponse.Type, errorRe" + "sponse.Code, errorResponse.RequestId, errorResponse.StatusCode);\r\n"); #line 183 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" } #line default #line hidden this.Write(" }\r\n\r\n"); #line 188 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" if (payload != null && payload.IsStreaming) { #line default #line hidden this.Write(@" /// <summary> /// Overriden to return true indicating the response contains streaming data. /// </summary> public override bool HasStreamingProperty { get { return true; } } "); #line 203 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" } this.AddResponseSingletonMethod(); #line default #line hidden #line 207 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" if(isEventStreamOutput) { #line default #line hidden this.Write(@" protected override bool ShouldReadEntireResponse(IWebResponseData response, bool readEntireResponse) { return false; } /// <summary> /// Specifies that the response should be streamed /// </summary> public override bool HasStreamingProperty => true; "); #line 219 "C:\Dev\Repos\AWSDotNetPublic\generator\ServiceClientGeneratorLib\Generators\Marshallers\JsonRPCResponseUnmarshaller.tt" } #line default #line hidden this.Write(" }\r\n}"); return this.GenerationEnvironment.ToString(); } } #line default #line hidden }