internal static RecurrenceSchedule DeserializeRecurrenceSchedule(JsonElement element) { RecurrenceFrequency frequency = default; int interval = default; Optional <RecurrencePattern> pattern = default; Optional <DateTimeOffset?> endTime = default; Optional <ScheduleStatus> scheduleStatus = default; ScheduleType scheduleType = default; Optional <DateTimeOffset?> startTime = default; Optional <string> timeZone = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("frequency")) { frequency = new RecurrenceFrequency(property.Value.GetString()); continue; } if (property.NameEquals("interval")) { interval = property.Value.GetInt32(); continue; } if (property.NameEquals("pattern")) { if (property.Value.ValueKind == JsonValueKind.Null) { pattern = null; continue; } pattern = RecurrencePattern.DeserializeRecurrencePattern(property.Value); continue; } if (property.NameEquals("endTime")) { if (property.Value.ValueKind == JsonValueKind.Null) { endTime = null; continue; } endTime = property.Value.GetDateTimeOffset("O"); continue; } if (property.NameEquals("scheduleStatus")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } scheduleStatus = new ScheduleStatus(property.Value.GetString()); continue; } if (property.NameEquals("scheduleType")) { scheduleType = new ScheduleType(property.Value.GetString()); continue; } if (property.NameEquals("startTime")) { if (property.Value.ValueKind == JsonValueKind.Null) { startTime = null; continue; } startTime = property.Value.GetDateTimeOffset("O"); continue; } if (property.NameEquals("timeZone")) { if (property.Value.ValueKind == JsonValueKind.Null) { timeZone = null; continue; } timeZone = property.Value.GetString(); continue; } } return(new RecurrenceSchedule(Optional.ToNullable(endTime), Optional.ToNullable(scheduleStatus), scheduleType, Optional.ToNullable(startTime), timeZone.Value, frequency, interval, pattern.Value)); }
internal static ScheduleBase DeserializeScheduleBase(JsonElement element) { if (element.TryGetProperty("scheduleType", out JsonElement discriminator)) { switch (discriminator.GetString()) { case "Cron": return(CronSchedule.DeserializeCronSchedule(element)); case "Recurrence": return(RecurrenceSchedule.DeserializeRecurrenceSchedule(element)); } } Optional <DateTimeOffset?> endTime = default; Optional <ScheduleStatus> scheduleStatus = default; ScheduleType scheduleType = default; Optional <DateTimeOffset?> startTime = default; Optional <string> timeZone = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("endTime")) { if (property.Value.ValueKind == JsonValueKind.Null) { endTime = null; continue; } endTime = property.Value.GetDateTimeOffset("O"); continue; } if (property.NameEquals("scheduleStatus")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } scheduleStatus = new ScheduleStatus(property.Value.GetString()); continue; } if (property.NameEquals("scheduleType")) { scheduleType = new ScheduleType(property.Value.GetString()); continue; } if (property.NameEquals("startTime")) { if (property.Value.ValueKind == JsonValueKind.Null) { startTime = null; continue; } startTime = property.Value.GetDateTimeOffset("O"); continue; } if (property.NameEquals("timeZone")) { if (property.Value.ValueKind == JsonValueKind.Null) { timeZone = null; continue; } timeZone = property.Value.GetString(); continue; } } return(new ScheduleBase(Optional.ToNullable(endTime), Optional.ToNullable(scheduleStatus), scheduleType, Optional.ToNullable(startTime), timeZone.Value)); }
internal static CronSchedule DeserializeCronSchedule(JsonElement element) { string expression = default; Optional <DateTimeOffset?> endTime = default; Optional <ScheduleStatus> scheduleStatus = default; ScheduleType scheduleType = default; Optional <DateTimeOffset?> startTime = default; Optional <string> timeZone = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("expression")) { expression = property.Value.GetString(); continue; } if (property.NameEquals("endTime")) { if (property.Value.ValueKind == JsonValueKind.Null) { endTime = null; continue; } endTime = property.Value.GetDateTimeOffset("O"); continue; } if (property.NameEquals("scheduleStatus")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } scheduleStatus = new ScheduleStatus(property.Value.GetString()); continue; } if (property.NameEquals("scheduleType")) { scheduleType = new ScheduleType(property.Value.GetString()); continue; } if (property.NameEquals("startTime")) { if (property.Value.ValueKind == JsonValueKind.Null) { startTime = null; continue; } startTime = property.Value.GetDateTimeOffset("O"); continue; } if (property.NameEquals("timeZone")) { if (property.Value.ValueKind == JsonValueKind.Null) { timeZone = null; continue; } timeZone = property.Value.GetString(); continue; } } return(new CronSchedule(Optional.ToNullable(endTime), Optional.ToNullable(scheduleStatus), scheduleType, Optional.ToNullable(startTime), timeZone.Value, expression)); }