@microsoft.azure/autorest.incubator
Version:
AutoRest incubator project
122 lines • 8.51 kB
JavaScript
;
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