2009-02-01

opensocial-jquery 0.5.0 jQuery.ajax deferred と appdata の対応と people の強化

なかじまんです。opensocial-jquery 0.5.0 をリリースしました。主な内容は、次のとおりです。

次のとおり、プロフィールや友達リストを取得するとき、プロフィール項目、フィルタ条件、ソート条件、ページング条件を指定できるようになりました。指定できる項目や条件は は Wiki にまとめています。

$.ajax({
url: '/people/@viewer/@friends',
data: {
fields: 'profileUrl,addresses',
filterBy: 'hasApp',
sortBy: 'name',
startIndex: 0, count: 10
},
dataType: 'data',
success: function(people) {
console.info(people.startIndex);
console.info(people.itemsPerPage);
console.info(people.totalResults);
$.each(people, function(i, person) {
console.info(person.id);
console.info(person.nickname);
});
},
error: function(xhr, status, e) {
console.info(xhr, status, e);
}
});

次のとおり、アプリケーションのデータを保存できるようになりました。指定できるデータや条件 は Wiki にまとめています。

$.ajax({
type: 'post',
url: '/appdata/@viewer/@self',
data: {
comment: { text: 'Say Hello!', lastModified: new Date().getTime() },
feeling: 'well',
footprint: true
},
dataType: 'data',
success: function() {},
error: function(xhr, status, e) {
console.error(xhr, status, e);
}
});

また、次のとおり、アプリケーションのデータを取得できるようになりました。取得するデータや条件 は Wiki にまとめています。

$.ajax({
url: '/appdata/@viewer/@friends',
data: { fields: 'comment,feeling' },
dataType: 'data',
success: function(data) {
$.each(data, function(userId, data) {
console.info(data.comment.text);
console.info(data.comment.lastModified);
console.info(data.feeling);
});
},
error: function(xhr, status, e) {
console.error(xhr, status, e);
}
});

Enhancing of jQuery.ajax with JSDeferred を組み込みました。これにより、JSDeferred を使って jQuery.ajax が拡張され、次のとおり、非同期メソッドのチェーンとエラーハンドリングが容易になりました。

$.ajax({
url: '/people/@viewer/@friends',
data: {},
dataType: 'data'
}).next(function(people) {
return $.ajax({
url: '/appdata/@viewer/@friends',
data: {},
dataType: 'data'
}).next(function(data) {
return $.map(people, function(person) {
if (data[person.id])
person.data = data[person.id];
return person;
});
});
}).next(function(people) {
$.each(people, function(i, person) {
console.info(person.id);
console.info(person.data);
});
}).error(function(e) {
console.error(e);
});

次のとおり、feature が利用できるか確認でき、その feature パラメータを取得できるようにしました。

var params = $.feature('locked-domain');
if (!params ) {
// locked-domain is not supported.
} else {
console.info(params.foo);
console.info(params.bar);
}

MySpace Developer Platform での動作を確認しました。MySpace はいろいろな経緯(でしょうかね)から、インタフェースが同じでも、他の OpenSocial コンテナと振る舞いが異なるところがあります。opensocial-jquery では、他のコンテナのソースコードをそのまま MySpace でも動作するように、その差異を吸収しています。

実用性も考慮し、今回から YUI Compressor を使って、jQuery を含めて 1つにまとめて圧縮したファイルを、アーカイブに含めるようにしました。

OpenSocial jQuery plugin - jOpenSocial
こちらや、こちらの方が、同じようなものを作ってらっしゃいますが、カスタマイズされたjQueryを使いたくなかったり、AppDataを取り扱いたかったり、Simpleにはしたくなかったので、jQuery用OpenSocialプラグインを作りました。
opensocial-jquery をリンクしてくださったのでリンクをお返しします。opensocial-jquery と jOpenSocial はコンセプトが違うようですね。その違いから触発されるものがあります。そう。今回から AppData を使えるようにしましたので、この場で補足しときます。

0 件のコメント: