public class RemindersClientExt : RemindersClient
{
private ICustomLogger Logger { get; set; }
public RemindersClientExt(SkillRequest request, ICustomLogger logger) : this(
request.Context.System.ApiEndpoint,
request.Context.System.ApiAccessToken,
logger)
{ }
public RemindersClientExt(string endpointUrl, string accessToken, ICustomLogger logger)
:base(endpointUrl, accessToken)
{
Logger = logger;
}
public RemindersClientExt(HttpClient client, ICustomLogger logger)
:base(client)
{
Logger = logger;
}
public new async Task<ReminderChangedResponse> Create(Reminder reminder)
{
var message = await Client.PostAsync(
new Uri("/v1/alerts/reminders", UriKind.Relative),
new StringContent(SerializeReminder(reminder), Encoding.UTF8, "application/json"));
if (message.StatusCode != HttpStatusCode.Created)
{
var body = await message.Content.ReadAsStringAsync();
throw new InvalidOperationException($"Unexpected result: Status {message.StatusCode}, body: {body}");
}
return JsonConvert.DeserializeObject<ReminderChangedResponse>(await message.Content.ReadAsStringAsync());
}
public new async Task<ReminderChangedResponse> Update(string alertToken, Reminder reminder)
{
var message = await Client.PutAsync(
new Uri("/v1/alerts/reminders/" + System.Net.WebUtility.UrlEncode(alertToken), UriKind.Relative),
new StringContent(SerializeReminder(reminder), Encoding.UTF8, "application/json"));
if (message.StatusCode != HttpStatusCode.OK)
{
var body = await message.Content.ReadAsStringAsync();
throw new InvalidOperationException($"Unexpected result: Status {message.StatusCode}, body:{body}");
}
return JsonConvert.DeserializeObject<ReminderChangedResponse>(await message.Content.ReadAsStringAsync());
}
private string SerializeReminder(Reminder reminder)
{
var serializerSettings = new JsonSerializerSettings { DateFormatString = "yyyy-MM-ddTH:mm:ss.fff" };
//var serializedReminder = JsonConvert.SerializeObject(reminder, serializerSettings);
var serializedReminder = JsonConvert.SerializeObject(reminder);
Logger.DebugFormat("SERIALIZATION of REMINDER object: {0}", serializedReminder);
return serializedReminder;
}
}
With the JsonSerializerSettings used in the above code the creation of reminders works like expected. Maybe you can reproduce this issue by using DateTime.UtcNow
in your code instead of parsing the DateTime from a correct DateString.