メモ代わり。てきとーに。 いや、ですからてきとーですって。 2年前ぐらいにPythonあたりでメールくれた方、ごめんなさい。メール紛失してしまい無視した形になってしまいました。。。

2009年7月29日水曜日

[Apache Shindig][お勉強][OpenSocial] メモ97 messagesサービスのmethod

requestSendMessageに対応するサービスはmessages.createかと思いきや、
そうとは限らないっぽい。

OpenSocialでは特に規定が無いので、
実装しやすそうな
messages.modify
を使用しようかと。

で、その際のjsonrpccontainer.jsのrequestSendMessageの今のところの実装。

  1. JsonRpcContainer.prototype.requestSendMessage = function(recipientIds, message, opt_callback, opt_params) {  
  2.   opt_callback = opt_callback || function(){};  
  3.   opt_params = opt_params || {}; /* 使わないよ */  
  4.   
  5.   var body = gadgets.util.unescapeString(message.getField(  
  6.       opensocial.Message.Field.BODY));  
  7.   var title = gadgets.util.unescapeString(message.getField(  
  8.       opensocial.Message.Field.TITLE));  
  9.   var type = gadgets.util.unescapeString(message.getField(  
  10.       opensocial.Message.Field.TYPE));  
  11.   
  12.   if (!body || body.length === 0) {  
  13.     var bodyMsgKey = gadgets.util.unescapeString(message.getField(  
  14.       opensocial.Message.Field.BODY_ID));  
  15.     body = gadgets.Prefs.getMsg(bodyMsgKey);  
  16.   }  
  17.   if (!title || title.length === 0) {  
  18.     var titleMsgKey = gadgets.util.unescapeString(message.getField(  
  19.       opensocial.Message.Field.TITLE_ID));  
  20.     title = gadgets.Prefs.getMsg(titleMsgKey);  
  21.   }  
  22.   var self = this;  
  23.   var callback = function() {  
  24.     var req = opensocial.newDataRequest();  
  25.     var viewer = new opensocial.IdSpec({'userId' : 'VIEWER'});  
  26.     var rpc = { method : "messages.modify" };  
  27.     rpc.params = self.translateIdSpec(viewer);  
  28.     rpc.params.appId = "@app";  
  29.   
  30.     FieldTranslations.translateNetworkDistance(viewer, rpc.params);  
  31.   
  32.     rpc.params.msgCollId = "dummyMsgCollId";  
  33.     rpc.params.entity = {};  
  34.     rpc.params.entity["title"] = title;  
  35.     rpc.params.entity["body"]  = body;  
  36.     rpc.params.entity["type"]  = type;  
  37.     rpc.params.entity["recipients"] = self.translateIdSpec(self.makeIdSpec(recipientIds))["userId"];  
  38.   
  39.     var messageRequest = new JsonRpcRequestItem(rpc);  
  40.   
  41.     req.add(messageRequest, 'key');  
  42.     req.send(function(response) {  
  43.        opt_callback(response.get('key'));  
  44.     });  
  45.   };  
  46.   var callbackId = "cId_" + Math.random();  
  47.   callbackIdStore[callbackId] = callback;  
  48.   gadgets.rpc.call(null'requestSendMessage',  
  49.       null,  
  50.       callbackId,  
  51.       recipientIds,  
  52.       title,  
  53.       body);  
  54. };  

ってな感じ。
サーバ側のサービスを実装してみないとわからないけど、
今度こそ、とりあえずはrequestSendMessageは動作させることができそう。

はてさて。

.

0 コメント: