UserService.js 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. // wrapped by build app
  2. define("dojox/xmpp/UserService", ["dijit","dojo","dojox"], function(dijit,dojo,dojox){
  3. dojo.provide("dojox.xmpp.UserService");
  4. dojo.declare("dojox.xmpp.UserService", null, {
  5. constructor: function(xmppService){
  6. this.session= xmppService;
  7. },
  8. getPersonalProfile: function(){
  9. var req={
  10. id: this.session.getNextIqId(),
  11. type: 'get'
  12. }
  13. var request = new dojox.string.Builder(dojox.xmpp.util.createElement("iq",req,false));
  14. request.append(dojox.xmpp.util.createElement("query",{xmlns:"jabber:iq:private"},false));
  15. request.append(dojox.xmpp.util.createElement("sunmsgr",{xmlsns:'sun:xmpp:properties'},true));
  16. request.append("</query></iq>");
  17. var def = this.session.dispatchPacket(request.toString(),"iq",req.id);
  18. def.addCallback(this, "_onGetPersonalProfile");
  19. },
  20. setPersonalProfile: function(props){
  21. var req={
  22. id: this.session.getNextIqId(),
  23. type: 'set'
  24. }
  25. var request = new dojox.string.Builder(dojox.xmpp.util.createElement("iq",req,false));
  26. request.append(dojox.xmpp.util.createElement("query",{xmlns:"jabber:iq:private"},false));
  27. request.append(dojox.xmpp.util.createElement("sunmsgr",{xmlsns:'sun:xmpp:properties'},false));
  28. for (var key in props){
  29. request.append(dojox.xmpp.util.createElement("property",{name: key},false));
  30. request.append(dojox.xmpp.util.createElement("value",{},false));
  31. request.append(props[key]);
  32. request.append("</value></props>");
  33. }
  34. request.append("</sunmsgr></query></iq>");
  35. var def = this.session.dispatchPacket(request.toString(), "iq", req.id);
  36. def.addCallback(this, "_onSetPersonalProfile");
  37. },
  38. _onSetPersonalProfile: function(response){
  39. if(response.getAttribute('type')=='result'){
  40. this.onSetPersonalProfile(response.getAttribute('id'));
  41. }else if(response.getAttribute('type')=='error'){
  42. var err = this.session.processXmppError(response);
  43. this.onSetPersonalProfileFailure(err);
  44. }
  45. },
  46. onSetPersonalProfile: function(id){},
  47. onSetPersonalProfileFailure: function(err){},
  48. _onGetPersonalProfile: function(profile){
  49. if (profile.getAttribute('type')=='result'){
  50. var props = {};
  51. if (profile.hasChildNodes()){
  52. var queryNode = profile.firstChild;
  53. if ((queryNode.nodeName=="query")&&(queryNode.getAttribute('xmlns')=='jabber:iq:private')){
  54. var sunNode = queryNode.firstChild;
  55. if ((sunNode.nodeName=='query')&&(sunNode.getAttributes('xmlns')=='sun:xmpp:properties')){
  56. for (var i=0; i<sunNode.childNodes.length;i++){
  57. var n = sunNode.childNodes[i];
  58. if(n.nodeName == 'property'){
  59. var name = n.getAttribute('name');
  60. var val = n.firstChild || "";
  61. props[name]=val;
  62. }
  63. }
  64. }
  65. }
  66. this.onGetPersonalProfile(props);
  67. }
  68. }else if (profile.getAttribute('type')=='error'){
  69. var err = this.session.processXmppError(profile);
  70. this.onGetPersonalProfileFailure(err);
  71. }
  72. return profile;
  73. },
  74. onGetPersonalProfile: function(profile){
  75. //console.log("UserService::onGetPersonalProfile() ", profile);
  76. },
  77. onGetPersonalProfileFailure: function(err){
  78. //console.log("UserService::onGetPersonalProfileFailure() ", err);
  79. }
  80. });
  81. });