Formatter
Mon Jun 01 2015 18:00:15 GMT+0200 (Central Europe Daylight Time)
enabled
# Accessing Wunderlist hi @done(15-06-01 17:57) RUP Folien lesen @id(1176973103) Wunderlist from Lively access @id(1176973441) This is a new task from Lively @id(1177585085)
SystemBrowser
X

Menu
N

...
../
BiggerStatusMessages.js (not parsed)
CloudStorageSynchronization.js (not parsed)
CloudStorageWebRequests.js (not parsed)
CopyAndPaste.js (not parsed)
DebugEvents.js (not parsed)
ExperimentalFeatures.js (not parsed)
FixWindowsCopyBug.js (not parsed)
LoadOldPages.js (not parsed)
MethodFinder.js (not parsed)
PartsMenu.js (not parsed)
RobustLoading.js (not parsed)
SimpleBoundEval.js (not parsed)
-----
-----
-----
1
-----
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
>
<
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
follow log
clear
reattach
Log Messages
X

Menu
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Enter search term:
Next
regexp
Prev
Occur

X
getAppInfo
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Enter search term:
Next
regexp
Prev
Occur

X
Dropbox.js
X

Menu
N

...
../
callbacks/
tests/
tools/
CloudStorage.js (not parsed)
Dropbox.js (not parsed)
LocalFS.js (not parsed)
MediaStreaming.js (not parsed)
OneDrive.js (not parsed)
SessionTracker.js (not parsed)
WebSockets.js (not parsed)
Wiki.js (not parsed)
Wunderlist.js (not parsed)
-----
-----
-----
1
-----
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
>
<
drop
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Enter search term:
Next
regexp
Prev
Occur

X
        "title": "This is a new task from Lively"
    }), true)
task = JSON.parse(r.content)
JSON.prettyPrint(task)
// Get Task
r = lively.net.Wunderlist.get("tasks/" + task.id, true)
task2 = JSON.parse(r.content)
JSON.prettyPrint(task)
// Update Task
r = lively.net.Wunderlist.patch("tasks/"  + task2.id, 
    JSON.serialize({
        "title": "This is a new task has changed!",
        "revision": task2.revision, // IMPORTANT
    }), true)
// And complete it
// but first, get the latest revsion to prevent conflicts
r = lively.net.Wunderlist.get("tasks/" + task.id, true)
task = JSON.parse(r.content)
r = lively.net.Wunderlist.patch("tasks/"  + task.id, 
    JSON.serialize({
        "title": "This is a new task has changed!",
        "completed": true,
        "revision": task.revision, // IMPORTANT
    }), true)
// Get Lists
r = lively.net.Wunderlist.get("lists", true)
lists = JSON.parse(r.content)
lists.collect(function(ea) { return ea.title}).join("\n")
// Get Tasks in Inbox
inbox = lists.detect(function(ea) { return ea.title == "inbox"})
r = lively.net.Wunderlist.get("tasks?list_id="+inbox.id, true)
tasks = JSON.parse(r.content)
tasks.collect(function(ea) { return "☐ " + ea.title + " @id(" + ea.id + ")"}).join("\n")
// Get Completed Tasks in Inbox
inbox = lists.detect(function(ea) { return ea.title == "inbox"})
r = lively.net.Wunderlist.get("tasks?list_id="+inbox.id + "&completed=true", true)
tasks = JSON.parse(r.content)
tasks.collect(function(ea) { return "☐ " + ea.title + " @id(" + ea.id + ")"}).join("\n")
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Wunderlist.js
X

Menu
N
core/lively/net/
...
../
callbacks/
tests/
tools/
CloudStorage.js
Dropbox.js
LocalFS.js (not parsed)
MediaStreaming.js (not parsed)
OneDrive.js (not parsed)
SessionTracker.js (not parsed)
WebSockets.js (not parsed)
Wiki.js (not parsed)
Wunderlist.js
thisModule (extension)
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
module('lively.net.Wunderlist').requires('lively.net.CloudStorage').toRun(function(thisModule) {
Object.extend(thisModule, {
    onAuthenticated: function(uuidtokenstateauthWindow) {
        // odauth calls our onAuthenticated method to give us the user's auth token.
        // in this demo app we just use this as the method to drive the page logic
        var req = lively.net.CloudStorage.removePendingRequest(uuid);
        if (state && state !== uuid) throw "Invalid state! CSRF!";
        if (token) {
        if (authWindow) {
          authWindow.close();
        }
        var odurl = "https://a.wunderlist.com/api/v1/" + req.path,
            odquery= "",
            userSuccess = req.ajax.success;
        req.ajax.headers = {
                "Content-Type": "application/json", // #Jens ... where else?
                "X-Client-ID": req.appInfo.clientId,
                "X-Access-Token": token
            }
        req.ajax.success = function (datatextStatusjqXHR) {
            userSuccess && userSuccess(data, textStatus, jqXHR);
            if (!req.content) {
                if (jqXHR.response)
                    req.content = jqXHR.response // #JensLincke  response vs. responseText
                else {
                    try { var text = jqXHR.responseText} catch(e) {} // ignore InvalidStateError
                    req.content = text; 
                }
            }
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
>
<
X
Saving lively.net.Wunderlist... Successfully saved Successfully evaluated lively.net.Wunderlist