UNPKG

@microsoft.azure/autorest.incubator

Version:
122 lines 8.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const media_types_1 = require("../../common/media-types"); const expression_1 = require("../../csharp/code-dom/expression"); const clientruntime_1 = require("../../csharp/lowlevel-generator/clientruntime"); const primitive_1 = require("../../csharp/schema/primitive"); const mscorlib_1 = require("../../csharp/code-dom/mscorlib"); const if_1 = require("../../csharp/code-dom/statements/if"); class DateTime extends primitive_1.Primitive { constructor(schema, isRequired) { super(schema); this.isRequired = isRequired; this.isXmlAttribute = false; this.jsonType = clientruntime_1.ClientRuntime.JsonString; // public DateFormat = new StringExpression('yyyy-MM-dd'); this.DateTimeFormat = new expression_1.StringExpression('yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss.fffffffZ'); } get declaration() { return `System.DateTimeOffset${this.isRequired ? '' : '?'}`; } castJsonTypeToPrimitive(tmpValue, defaultValue) { return `System.DateTimeOffset.TryParse((string)${tmpValue}, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AdjustToUniversal, out var ${tmpValue}Value) ? ${tmpValue}Value : ${defaultValue}`; } castXmlTypeToPrimitive(tmpValue, defaultValue) { return `System.DateTimeOffset.TryParse((string)${tmpValue}, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AdjustToUniversal, out var ${tmpValue}Value) ? ${tmpValue}Value : ${defaultValue}`; } serializeToNode(mediaType, value, serializedName) { switch (mediaType) { case media_types_1.KnownMediaType.Json: return this.isRequired ? expression_1.toExpression(`(${clientruntime_1.ClientRuntime.JsonNode}) new ${this.jsonType}(${value}.ToString(${this.DateTimeFormat},System.Globalization.CultureInfo.InvariantCulture))`) : expression_1.toExpression(`null != ${value} ? (${clientruntime_1.ClientRuntime.JsonNode}) new ${this.jsonType}(${value}?.ToString(${this.DateTimeFormat},System.Globalization.CultureInfo.InvariantCulture)) : null`); case media_types_1.KnownMediaType.Xml: return this.isRequired ? expression_1.toExpression(`new ${mscorlib_1.System.Xml.Linq.XElement}("${serializedName}",${value}.ToString(${this.DateTimeFormat},System.Globalization.CultureInfo.InvariantCulture))`) : expression_1.toExpression(`null != ${value} ? new ${mscorlib_1.System.Xml.Linq.XElement}("${serializedName}",${value}?.ToString(${this.DateTimeFormat},System.Globalization.CultureInfo.InvariantCulture)) : null`); case media_types_1.KnownMediaType.Cookie: case media_types_1.KnownMediaType.QueryParameter: case media_types_1.KnownMediaType.Header: case media_types_1.KnownMediaType.Text: case media_types_1.KnownMediaType.UriParameter: return expression_1.toExpression(this.isRequired ? `${value}.ToString(${this.DateTimeFormat},System.Globalization.CultureInfo.InvariantCulture)` : `null == ${value} ? ${mscorlib_1.System.String.Empty} : "${value}?.ToString(${this.DateTimeFormat},System.Globalization.CultureInfo.InvariantCulture)"`); } return expression_1.toExpression(`null /* serializeToNode doesn't support '${mediaType}' ${__filename}*/`); } serializeToContainerMember(mediaType, value, container, serializedName) { switch (mediaType) { case media_types_1.KnownMediaType.Json: // container : JsonObject return `AddIf( ${this.serializeToNode(mediaType, value, serializedName)}, "${serializedName}" ,${expression_1.valueOf(container)}.Add );`; case media_types_1.KnownMediaType.Xml: // container : XElement return `AddIf( ${this.serializeToNode(mediaType, value, serializedName)}, ${expression_1.valueOf(container)}.Add );`; case media_types_1.KnownMediaType.Header: // container : HttpRequestHeaders return this.isRequired ? `${expression_1.valueOf(container)}.Add("${serializedName}",${value}.ToString(${this.DateTimeFormat},System.Globalization.CultureInfo.InvariantCulture));` : if_1.If(`null != ${value}`, `${expression_1.valueOf(container)}.Add("${serializedName}",${value}?.ToString(${this.DateTimeFormat},System.Globalization.CultureInfo.InvariantCulture));`); case media_types_1.KnownMediaType.QueryParameter: // gives a name=value for use inside a c# template string($"foo{someProperty}") as a query parameter return this.isRequired ? `${serializedName}={${value}..ToString(${this.DateTimeFormat},System.Globalization.CultureInfo.InvariantCulture)}` : `{null == ${value} ? ${mscorlib_1.System.String.Empty} : $"${serializedName}={${value}?.ToString(${this.DateTimeFormat},System.Globalization.CultureInfo.InvariantCulture)}"}`; case media_types_1.KnownMediaType.UriParameter: // gives a name=value for use inside a c# template string($"foo{someProperty}") as a query parameter return this.isRequired ? `${serializedName}={${value}.ToString(${this.DateTimeFormat},System.Globalization.CultureInfo.InvariantCulture)}` : `{null == ${value} ? "": $"${serializedName}={${value}?.ToString(${this.DateTimeFormat},System.Globalization.CultureInfo.InvariantCulture)}"}`; } return (`/* serializeToContainerMember doesn't support '${mediaType}' ${__filename}*/`); } // public static string DateFormat = "yyyy-MM-dd"; // public static string DateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK"; // public static string DateTimeRfc1123Format = "R"; // public static JsonString CreateDate(DateTime? value) => value is DateTime date ? new JsonString(date.ToString(DateFormat, CultureInfo.InvariantCulture)) : null; // public static JsonString CreateDateTime(DateTime? value) => value is DateTime date ? new JsonString(date.ToString(DateTimeFormat, CultureInfo.InvariantCulture)) : null; // public static JsonString CreateDateTimeRfc1123(DateTime ? value) => value is DateTime date ? new JsonString(date.ToString(DateTimeRfc1123Format, CultureInfo.InvariantCulture)) : null; validateValue(property) { return ``; } } exports.DateTime = DateTime; class DateTime1123 extends DateTime { constructor(schema, isRequired) { super(schema, isRequired); this.DateTimeFormat = new expression_1.StringExpression('R'); } } exports.DateTime1123 = DateTime1123; class UnixTime extends primitive_1.Primitive { constructor(schema, isRequired) { super(schema); this.isRequired = isRequired; this.isXmlAttribute = false; this.jsonType = clientruntime_1.ClientRuntime.JsonNumber; this.EpochDate = new expression_1.LiteralExpression('new System.DateTimeOffset(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)'); } castJsonTypeToPrimitive(tmpValue, defaultValue) { return `long.TryParse((string)${tmpValue}, out var ${tmpValue}Value) ? ${this.EpochDate}.AddSeconds(${tmpValue}Value) : ${defaultValue}`; } castXmlTypeToPrimitive(tmpValue, defaultValue) { return `long.TryParse((string)${tmpValue}, out var ${tmpValue}Value) ? ${this.EpochDate}.AddSeconds(${tmpValue}Value) : ${defaultValue}`; } /** emits an expression serialize this to the value required by the container */ serializeToNode(mediaType, value, serializedName) { return super.serializeToNode(mediaType, new expression_1.LiteralExpression(`(long)${value}.Subtract(EpochDate).TotalSeconds`), serializedName); } /** emits the code required to serialize this into a container */ serializeToContainerMember(mediaType, value, container, serializedName) { return super.serializeToContainerMember(mediaType, new expression_1.LiteralExpression(`(long)${value}.Subtract(EpochDate).TotalSeconds`), container, serializedName); } validateValue(property) { return ``; } get declaration() { return `System.DateTimeOffset${this.isRequired ? '' : '?'}`; } } exports.UnixTime = UnixTime; //# sourceMappingURL=date-time.js.map