Files
habittodo/Habittodo.FunctionApp/SyncFunction.cs

50 lines
1.7 KiB
C#

using System;
using System.Threading.Tasks;
using Microsoft.Azure.Functions.Worker;
using Habittodo.Service;
namespace Habittodo.FunctionApp
{
public static class SyncFunction
{
private static Configuration SyncConfiguration { get; } = new Configuration();
[Function("SyncFunction")]
public static async Task Run([TimerTrigger("0 */60 * * * *", RunOnStartup = true)] MyInfo t, FunctionContext c)
{
// initialize integration services
var todoistService = new TodoistIntegrationService(SyncConfiguration.TodoistApiKey,
SyncConfiguration.TableStorageConnectionString,
SyncConfiguration.UserId);
var habiticaService = new HabiticaIntegrationService(SyncConfiguration.HabiticaUserId,
SyncConfiguration.HabiticaApiKey,
SyncConfiguration.TableStorageConnectionString,
SyncConfiguration.UserId);
// get all changed items from todoist
var items = await todoistService.ReadItemChanges();
// perform actions
await habiticaService.Add(items.WhereAdded());
await habiticaService.Update(items.WhereUpdated());
await habiticaService.Complete(items.WhereCompleted());
await habiticaService.Delete(items.WhereDeleted());
// commit read changes
await todoistService.CommitRead();
}
}
public class MyInfo
{
public MyScheduleStatus ScheduleStatus { get; set; }
public bool IsPastDue { get; set; }
}
public class MyScheduleStatus
{
public DateTime Last { get; set; }
public DateTime Next { get; set; }
public DateTime LastUpdated { get; set; }
}
}