次のとおり、プロフィールや友達リストを取得するとき、プロフィール項目、フィルタ条件、ソート条件、ページング条件を指定できるようになりました。指定できる項目や条件は は 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 件のコメント:
コメントを投稿