UserService.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. /*
  2. Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved.
  3. Available via Academic Free License >= 2.1 OR the modified BSD license.
  4. see: http://dojotoolkit.org/license for details
  5. */
  6. if(!dojo._hasResource["dojox.xmpp.UserService"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
  7. dojo._hasResource["dojox.xmpp.UserService"] = true;
  8. dojo.provide("dojox.xmpp.UserService");
  9. dojo.declare("dojox.xmpp.UserService", null, {
  10. constructor: function(xmppService){
  11. this.session= xmppService;
  12. },
  13. getPersonalProfile: function(){
  14. var req={
  15. id: this.session.getNextIqId(),
  16. type: 'get'
  17. }
  18. var request = new dojox.string.Builder(dojox.xmpp.util.createElement("iq",req,false));
  19. request.append(dojox.xmpp.util.createElement("query",{xmlns:"jabber:iq:private"},false));
  20. request.append(dojox.xmpp.util.createElement("sunmsgr",{xmlsns:'sun:xmpp:properties'},true));
  21. request.append("</query></iq>");
  22. var def = this.session.dispatchPacket(request.toString(),"iq",req.id);
  23. def.addCallback(this, "_onGetPersonalProfile");
  24. },
  25. setPersonalProfile: function(props){
  26. var req={
  27. id: this.session.getNextIqId(),
  28. type: 'set'
  29. }
  30. var request = new dojox.string.Builder(dojox.xmpp.util.createElement("iq",req,false));
  31. request.append(dojox.xmpp.util.createElement("query",{xmlns:"jabber:iq:private"},false));
  32. request.append(dojox.xmpp.util.createElement("sunmsgr",{xmlsns:'sun:xmpp:properties'},false));
  33. for (var key in props){
  34. request.append(dojox.xmpp.util.createElement("property",{name: key},false));
  35. request.append(dojox.xmpp.util.createElement("value",{},false));
  36. request.append(props[key]);
  37. request.append("</value></props>");
  38. }
  39. request.append("</sunmsgr></query></iq>");
  40. var def = this.session.dispatchPacket(request.toString(), "iq", req.id);
  41. def.addCallback(this, "_onSetPersonalProfile");
  42. },
  43. _onSetPersonalProfile: function(response){
  44. if(response.getAttribute('type')=='result'){
  45. this.onSetPersonalProfile(response.getAttribute('id'));
  46. }else if(response.getAttribute('type')=='error'){
  47. var err = this.session.processXmppError(response);
  48. this.onSetPersonalProfileFailure(err);
  49. }
  50. },
  51. onSetPersonalProfile: function(id){},
  52. onSetPersonalProfileFailure: function(err){},
  53. _onGetPersonalProfile: function(profile){
  54. if (profile.getAttribute('type')=='result'){
  55. var props = {};
  56. if (profile.hasChildNodes()){
  57. var queryNode = profile.firstChild;
  58. if ((queryNode.nodeName=="query")&&(queryNode.getAttribute('xmlns')=='jabber:iq:private')){
  59. var sunNode = queryNode.firstChild;
  60. if ((sunNode.nodeName=='query')&&(sunNode.getAttributes('xmlns')=='sun:xmpp:properties')){
  61. for (var i=0; i<sunNode.childNodes.length;i++){
  62. var n = sunNode.childNodes[i];
  63. if(n.nodeName == 'property'){
  64. var name = n.getAttribute('name');
  65. var val = n.firstChild || "";
  66. props[name]=val;
  67. }
  68. }
  69. }
  70. }
  71. this.onGetPersonalProfile(props);
  72. }
  73. }else if (profile.getAttribute('type')=='error'){
  74. var err = this.session.processXmppError(profile);
  75. this.onGetPersonalProfileFailure(err);
  76. }
  77. return profile;
  78. },
  79. onGetPersonalProfile: function(profile){
  80. //console.log("UserService::onGetPersonalProfile() ", profile);
  81. },
  82. onGetPersonalProfileFailure: function(err){
  83. //console.log("UserService::onGetPersonalProfileFailure() ", err);
  84. }
  85. });
  86. }