Skip to content

Instantly share code, notes, and snippets.

@yoko
Created September 1, 2009 01:40
Show Gist options
  • Save yoko/178830 to your computer and use it in GitHub Desktop.
Save yoko/178830 to your computer and use it in GitHub Desktop.
fetchData = function(key, p) {
var d = new Deferred;
var params = {};
params[opensocial.IdSpec.Field.USER_ID] = opensocial.IdSpec.PersonId.OWNER;
params[opensocial.IdSpec.Field.GROUP_ID] = 'SELF';
$.extend(params, p || {});
var request = opensocial.newDataRequest();
request.add(
request.newFetchPersonAppDataRequest(opensocial.newIdSpec(params), key),
key
);
request.send(function(data) {
var response = data.get(key).getData();
var ret;
for (var n in response)
ret = gadgets.json.parse(gadgets.util.unescapeString(response[n][key]));
d.call.call(d, ret);
});
return d;
};
fetchOwnerData = fetchData;
fetchViewerData = function(key) {
var params = {};
params[opensocial.IdSpec.Field.USER_ID] = opensocial.IdSpec.PersonId.VIEWER;
params[opensocial.IdSpec.Field.GROUP_ID] = 'SELF';
return fetchData(key, params);
};
updateData = function(key, value) {
value = gadgets.json.stringify(value);
var d = new Deferred;
var request = opensocial.newDataRequest();
request.add(
request.newUpdatePersonAppDataRequest(opensocial.IdSpec.PersonId.VIEWER, key, value),
key
);
request.send(d.call.bind(d));
return d;
};
removeData = function(key) {
if (!(key instanceof Array)) key = [key];
var d = new Deferred;
var request = opensocial.newDataRequest();
request.add(
request.newRemovePersonAppDataRequest(opensocial.IdSpec.PersonId.VIEWER, key),
key
);
request.send(d.call.bind(d));
return d;
};
fetchPerson = function(target) {
var d = new Deferred;
var request = opensocial.newDataRequest();
request.add(
request.newFetchPersonRequest(opensocial.IdSpec.PersonId[target.toUpperCase()]),
target
);
request.send(function(data) {
d.call.call(d, data.get(target).getData());
});
return d;
};
fetchOwner = function() { return fetchPerson('owner'); };
fetchViewer = function() { return fetchPerson('viewer'); };
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment