-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathWunderlist.fs
More file actions
48 lines (40 loc) · 1.63 KB
/
Wunderlist.fs
File metadata and controls
48 lines (40 loc) · 1.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
namespace WunderlistBackup
module Wunderlist =
open Requests
open System
let getAllData credentials =
let asyncGet =
(credentials, Get) ||>
asyncRequest
let asyncGetParse segment parser query =
async {
let! json = asyncGet segment query
return parser(json) |> Array.toList
}
let getAllByLists segment parse (lists : WList list) =
async {
let! results =
lists |>
List.map (fun list -> list.Id.ToString()) |>
List.map (fun listId -> asyncGetParse segment parse [ "list_id", listId ]) |>
Async.Parallel
return List.collect (fun z -> z) (results |> Array.toList)
}
async {
let! folders = asyncGetParse Folders FoldersProvider.Parse []
let! lists = asyncGetParse Lists ListsProvider.Parse []
let! tasks = getAllByLists Tasks TasksProvider.Parse lists
let! subtasks = getAllByLists Subtasks SubtasksProvider.Parse lists
let! notes = getAllByLists Notes NotesProvider.Parse lists
let! files = getAllByLists Files FilesProvider.Parse lists
return {
id = Guid.NewGuid().ToString()
timestamp = DateTimeOffset.Now
folders = folders
lists = lists
tasks = tasks
subtasks = subtasks
notes = notes
files = files
}
}