public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { // Load JObject from stream var jObject = JObject.Load(reader); // Create target request object based on "type" property if (jObject.Value <string>("type") == "list") { jObject.Remove("type"); var target = new ListDataSource(); serializer.Populate(jObject.CreateReader(), target); return(target); } if (jObject.Value <string>("type") == "object") { jObject.Remove("type"); var target = new ObjectDataSource(); serializer.Populate(jObject.CreateReader(), target); return(target); } var keyDataSource = new KeyValueDataSource(); serializer.Populate(jObject.CreateReader(), keyDataSource); return(keyDataSource); }
public static async Task <SkillResponse> SingleEventResponse(APLSkillRequest request, LocalEventTime eventToRecognise, LocalDate currentDate, Group groupData, string intro) { var response = SpeechHelper.RespondToEvent(eventToRecognise, currentDate, intro); if (request.Context.System.Device.IsInterfaceSupported(Consts.APLInterface)) { var dateDisplay = $"{eventToRecognise.Date.ToDateTimeUnspecified():MMMM dd yyyy}, {eventToRecognise.Event.LocalTime}"; var dataSource = new KeyValueDataSource { Properties = new Dictionary <string, object> { { "backgroundUrl", groupData.KeyPhoto?.HighRes ?? groupData.GroupPhoto?.HighRes }, { "groupName", groupData.Name }, { "eventDate", dateDisplay }, { "eventTitle", eventToRecognise.Event.Name } } }; var filename = request.APLInterfaceDetails().Runtime.MaxVersion == APLDocumentVersion.V1 ? "assets/NextEvent.json" : "assets/NextEvent2.json"; var document = await S3Helper.GetDocument(System.Environment.GetEnvironmentVariable("bucket"), filename); document.AddResponsiveDesign(); response.Response.Directives.Add(new RenderDocumentDirective { DataSources = new Dictionary <string, APLDataSource> { { "eventData", dataSource } }, Document = document, Token = eventToRecognise.Event.Id }); } return(response); }