Advertisement
Guest User

Untitled

a guest
Jul 29th, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.61 KB | None | 0 0
  1. public void sendSubscribe(String subscriberAddress) {
  2. try {
  3.  
  4. /**
  5. * Extracting the info received in this method (on the form username@proxy)
  6. */
  7. // create Request URI
  8. String[] address = subscriberAddress.split("@");
  9. SipURI toURI = myAddressFactory
  10. .createSipURI(address[0], address[1]);
  11.  
  12. /**
  13. * Create the required headers
  14. **/
  15. // Create ToHeader
  16. Address toNameAddress = myAddressFactory.createAddress(toURI);
  17. ToHeader toHeader = myHeaderFactory.createToHeader(toNameAddress,
  18. null);
  19.  
  20. // Create FromHeader
  21. SipURI fromURI = myAddressFactory.createSipURI(address[0],
  22. address[1]);
  23. Address fromNameAddress = myAddressFactory.createAddress(fromURI);
  24. FromHeader fromHeader = myHeaderFactory.createFromHeader(
  25. fromNameAddress, null);
  26. fromHeader.setTag("12");
  27.  
  28. // Create CseqHeader
  29. CSeqHeader cSeqHeader = myHeaderFactory.createCSeqHeader(1L,
  30. Request.SUBSCRIBE);
  31.  
  32. // Create CallIdHeader
  33. CallIdHeader callIdHeader = mySipProvider.getNewCallId();
  34.  
  35. // Create ExpiresHeader
  36. ExpiresHeader expiresHeader = myHeaderFactory
  37. .createExpiresHeader(3600);
  38.  
  39. // Create EventHeader
  40. EventHeader eventHeader = myHeaderFactory
  41. .createEventHeader("presence");
  42.  
  43. // Create MaxForwardsHeader
  44. MaxForwardsHeader maxForwards = myHeaderFactory
  45. .createMaxForwardsHeader(70);
  46.  
  47. // Create ViaHeader
  48.  
  49. String ipAddress = myListeningPoint.getIPAddress();
  50. ViaHeader viaHeader = myHeaderFactory.createViaHeader(ipAddress,
  51. myListeningPoint.getPort(),
  52. myListeningPoint.getTransport(), null);
  53. viaHeader.setRPort();
  54.  
  55. // Create Contact Headers
  56. SipURI contactURI = myAddressFactory.createSipURI(address[0], myIP);
  57. contactURI.setPort(mySipProvider.getListeningPoint(
  58. myListeningPoint.getTransport()).getPort());
  59. Address contactAddress = myAddressFactory.createAddress(contactURI);
  60. Header contactHeader = myHeaderFactory
  61. .createContactHeader(contactAddress);
  62.  
  63. /**
  64. * Create the request and add the corresponding headers
  65. **/
  66. // Create the request.
  67. Request request = myMessageFactory.createRequest(null);
  68.  
  69. // Add the headers
  70. request.setRequestURI(toURI);
  71. request.setExpires(expiresHeader);
  72. request.addHeader(toHeader);
  73. request.addHeader(fromHeader);
  74. request.addHeader(eventHeader);
  75. request.addHeader(cSeqHeader);
  76. request.addHeader(callIdHeader);
  77. request.addHeader(maxForwards);
  78. request.addHeader(viaHeader);
  79. request.addHeader(contactHeader);
  80.  
  81. /**
  82. * Print out the request you are going to send
  83. */
  84. System.out.println(request.toString());
  85.  
  86. /**
  87. * Finally create a new clienttransaction and send the request.
  88. **/
  89. // Create the client transaction.
  90. myClientTransaction = mySipProvider
  91. .getNewClientTransaction(request);
  92.  
  93. // Send the request out.
  94. myClientTransaction.sendRequest();
  95.  
  96. } catch (Exception e) {
  97. e.printStackTrace();
  98. }
  99. }
  100.  
  101. public void sendPublish(String statusid, String status) {
  102. try {
  103.  
  104. /**
  105. * Create the Request URI
  106. */
  107. // create Request URI
  108. SipURI reqURI = myAddressFactory
  109. .createSipURI(conf.userID, myServer);
  110.  
  111. /**
  112. * Create the required headers
  113. **/
  114. // Create ToHeader
  115. Address toNameAddress = myAddressFactory.createAddress(reqURI);
  116. ToHeader toHeader = myHeaderFactory.createToHeader(toNameAddress,
  117. null);
  118.  
  119. // Create FromHeader
  120. FromHeader fromHeader = myHeaderFactory.createFromHeader(
  121. toNameAddress, null);
  122. fromHeader.setTag("12");
  123.  
  124. // Create CseqHeader
  125. CSeqHeader cSeqHeader = myHeaderFactory.createCSeqHeader(1L,
  126. Request.PUBLISH);
  127.  
  128. // Create CallIdHeader
  129. CallIdHeader callIdHeader = mySipProvider.getNewCallId();
  130.  
  131. // Create ExpiresHeader
  132. ExpiresHeader expiresHeader = myHeaderFactory
  133. .createExpiresHeader(60);
  134.  
  135. // Create EventHeader
  136. EventHeader eventHeader = myHeaderFactory
  137. .createEventHeader("presence");
  138.  
  139. // Create MaxForwardsHeader
  140. MaxForwardsHeader maxForwards = myHeaderFactory
  141. .createMaxForwardsHeader(70);
  142.  
  143. // Create ViaHeader
  144. String ipAddress = myListeningPoint.getIPAddress();
  145. ViaHeader viaHeader = myHeaderFactory.createViaHeader(ipAddress,
  146. myListeningPoint.getPort(),
  147. myListeningPoint.getTransport(), null);
  148. viaHeader.setRPort();
  149.  
  150. // Create Contact Headers
  151. SipURI contactURI = myAddressFactory
  152. .createSipURI(conf.userID, myIP);
  153. contactURI.setPort(mySipProvider.getListeningPoint(
  154. myListeningPoint.getTransport()).getPort());
  155. Address contactAddress = myAddressFactory.createAddress(contactURI);
  156. Header contactHeader = myHeaderFactory
  157. .createContactHeader(contactAddress);
  158.  
  159. // Create ContentTypeHeader
  160. ContentTypeHeader contentHeader = myHeaderFactory
  161. .createContentTypeHeader("application", "pidf-diff+xml");
  162.  
  163. // Create AllowHeader
  164. AllowHeader allowHeader = myHeaderFactory
  165. .createAllowHeader("INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO");
  166.  
  167. /**
  168. * Create the request and add the headers
  169. **/
  170. // Create the request.
  171. Request request = myMessageFactory.createRequest(null);
  172.  
  173. request.setRequestURI(reqURI);
  174. request.setExpires(expiresHeader);
  175. request.addHeader(toHeader);
  176. request.addHeader(fromHeader);
  177. request.addHeader(eventHeader);
  178. request.addHeader(cSeqHeader);
  179. request.addHeader(callIdHeader);
  180. request.addHeader(maxForwards);
  181. request.addHeader(viaHeader);
  182. request.addHeader(contactHeader);
  183. request.addHeader(contentHeader);
  184. request.addHeader(allowHeader);
  185.  
  186. /**
  187. * Create the XML-content and add it to the request
  188. */
  189. String content = "<?xml version='1.0' encoding='UTF-8'?>"
  190. + "<presence xmlns='urn:ietf:params:xml:ns:pidf'"
  191. + "xmlns:dm='urn:ietf:params:xml:ns:pidf:data-model'"
  192. + "xmlns:rpid='urn:ietf:params:xml:ns:pidf:rpid'"
  193. + "xmlns:c='urn:ietf:params:xml:ns:pidf:cipid'"
  194. + "entity='sip:"
  195. + conf.userID
  196. + "@"
  197. + myServer.split(":")[0]
  198. + "'>"
  199. + "<tuple id='"
  200. + conf.userID
  201. + "'>"
  202. + "<status>"
  203. + "<basic>open</basic>"
  204. + "</status>"
  205. + "</tuple>"
  206. + "<dm:person id='"
  207. + conf.userID
  208. + "'>"
  209. + "<rpid:activities>"
  210. + "<rpid:"
  211. + statusid
  212. + "/>"
  213. + "</rpid:activities>"
  214. + "<dm:note>"
  215. + status
  216. + "</dm:note>" + "</dm:person>" + "</presence>";
  217.  
  218.  
  219. request.setContent(content, contentHeader);
  220.  
  221. /**
  222. * Print out the request you are going to send
  223. */
  224. System.out.println(request.toString());
  225.  
  226. /**
  227. * Finally create a new clienttransaction and send the request.
  228. **/
  229. // Create the client transaction.
  230. myClientTransaction = mySipProvider
  231. .getNewClientTransaction(request);
  232.  
  233. // send the request out.
  234. myClientTransaction.sendRequest();
  235.  
  236. } catch (Exception e) {
  237. e.printStackTrace();
  238. }
  239.  
  240. }
  241.  
  242. private void handleNotify(Request myRequest) {
  243. try {
  244.  
  245. /**
  246. * Create new server transaction if it is not already created.
  247. */
  248. if (myServerTransaction == null) {
  249. myServerTransaction = mySipProvider
  250. .getNewServerTransaction(myRequest);
  251. }
  252.  
  253. /**
  254. * Create a Status: 200 OK response and send it immediately back to the notifier.
  255. */
  256. Response myResponse = myMessageFactory.createResponse(200,
  257. myRequest);
  258. Address contactAddress = myAddressFactory.createAddress("sip:"
  259. + myIP + ":" + myPort);
  260. Header myContactHeader = myHeaderFactory
  261. .createContactHeader(contactAddress);
  262. myResponse.addHeader(myContactHeader);
  263.  
  264. myServerTransaction.sendResponse(myResponse);
  265.  
  266. /**
  267. * Use the info in myRequest to extract the status and user and show the new status-update on the GUI.
  268. */
  269.  
  270. if (myRequest.getRawContent() != null) {
  271. // Extract the XML-content
  272. String pidfContent = new String(myRequest.getRawContent());
  273.  
  274. // Find the entity
  275. int entityStart = pidfContent.indexOf("entity=\"") + 8;
  276. int entityEnd = pidfContent.indexOf("\"><tuple id=\"");
  277. String entity = pidfContent.substring(entityStart, entityEnd);
  278.  
  279. // Find the status
  280. int statusStart = pidfContent
  281. .indexOf("\"><rpid:activities><rpid:") + 25;
  282. int statusEnd = pidfContent.indexOf("/></rpid:activities>");
  283. String status = pidfContent.substring(statusStart, statusEnd);
  284.  
  285. // Update the GUI
  286. myGUI.updateListWithStatus(entity, status);
  287. System.out.println("Updated: " + entity + ", with status: "
  288. + status);
  289. }
  290.  
  291. } catch (Exception e) {
  292. e.printStackTrace();
  293. }
  294.  
  295. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement