Mercurial > prosody-modules
view mod_json_streams/strophe.jsonstreams.js @ 5416:2393dbae51ed
mod_http_oauth2: Add option for specifying TTL of registered clients
Meant to simplify configuration, since TTL vs ignoring expiration is
expected to be the main thing one would want to configure.
Unsure what the implications of having unlimited lifetime of clients
are, given no way to revoke them currently, short of rotating the
signing secret.
On one hand, it would be annoying to have the client expire.
On the other hand, it is trivial to re-register it.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 04 May 2023 18:41:33 +0200 |
parents | 7dbde05b48a9 |
children |
line wrap: on
line source
/* jsonstreams plugin ** ** This plugin upgrades Strophe to support XEP-0295: JSON Encodings for XMPP ** */ Strophe.addConnectionPlugin('jsonstreams', { init: function (conn) { var parseXMLString = function(xmlStr) { var xmlDoc = null; if (window.ActiveXObject) { xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async=false; xmlDoc.loadXML(xmlStr); } else { var parser = new DOMParser(); xmlDoc = parser.parseFromString(xmlStr, "text/xml"); } return xmlDoc; } // replace Strophe.Request._newXHR with new jsonstreams version // if JSON is detected if (window.JSON) { var _newXHR = Strophe.Request.prototype._newXHR; Strophe.Request.prototype._newXHR = function () { var _xhr = _newXHR.apply(this, arguments); var xhr = { readyState: 0, responseText: null, responseXML: null, status: null, open: function(a, b, c) { return _xhr.open(a, b, c) }, abort: function() { _xhr.abort(); }, send: function(data) { data = JSON.stringify({"s":data}); return _xhr.send(data); } }; var req = this; xhr.onreadystatechange = this.func.bind(null, this); _xhr.onreadystatechange = function() { xhr.readyState = _xhr.readyState; if (xhr.readyState != 4) { xhr.status = 0; xhr.responseText = ""; xhr.responseXML = null; } else { xhr.status = _xhr.status; xhr.responseText = _xhr.responseText; xhr.responseXML = _xhr.responseXML; if (_xhr.responseText && !(_xhr.responseXML && _xhr.responseXML.documentElement && _xhr.responseXML.documentElement.tagName != "parsererror")) { var data = JSON.parse(_xhr.responseText); if (data && data.s) { xhr.responseText = data.s; xhr.responseXML = parseXMLString(data.s); } } } if ("function" == typeof xhr.onreadystatechange) { xhr.onreadystatechange(req); } } return xhr; }; } else { Strophe.error("jsonstreams plugin loaded, but JSON not found." + " Falling back to native XHR implementation."); } } });