1
0
mirror of https://github.com/matrix-org/matrix-js-sdk.git synced 2025-11-28 05:03:59 +03:00

Bake in support for promises.

This means we can specify the SDK's dependency on Q to make setting things up
significantly easier.
This commit is contained in:
Kegan Dougal
2015-06-05 11:41:26 +01:00
parent fce4d5d1d6
commit d095eff1a4
4 changed files with 49 additions and 88 deletions

View File

@@ -3,7 +3,7 @@
* This is an internal module. See {@link MatrixHttpApi} for the public class.
* @module http-api
*/
var q = require("q");
var utils = require("./utils");
/*
@@ -162,36 +162,39 @@ module.exports.MatrixHttpApi.prototype = {
"Expected callback to be a function but got " + typeof callback
);
}
return this.opts.request(
{
uri: uri,
method: method,
withCredentials: false,
qs: queryParams,
body: data,
json: true,
headers: HEADERS,
_matrix_opts: this.opts
},
requestCallback(callback)
var defer = q.defer();
this.opts.request(
{
uri: uri,
method: method,
withCredentials: false,
qs: queryParams,
body: data,
json: true,
headers: HEADERS,
_matrix_opts: this.opts
},
requestCallback(defer, callback)
);
return defer.promise;
}
};
var requestCallback = function(userDefinedCallback) {
if (!userDefinedCallback) {
return undefined;
}
var requestCallback = function(defer, userDefinedCallback) {
userDefinedCallback = userDefinedCallback || function(){};
return function(err, response, body) {
if (err) {
return userDefinedCallback(err);
if (!err && response.statusCode >= 400) {
err = new module.exports.MatrixError(body);
}
if (response.statusCode >= 400) {
return userDefinedCallback(new Error(body));
if (err) {
defer.reject(err);
userDefinedCallback(err);
}
else {
defer.resolve(body);
userDefinedCallback(null, body);
}
};
@@ -212,4 +215,4 @@ module.exports.MatrixError = function MatrixError(errorJson) {
this.data = errorJson;
}
module.exports.MatrixError.prototype = Object.create(Error.prototype);
module.exports.MatrixError.prototype.constructor = MatrixError;
module.exports.MatrixError.prototype.constructor = module.exports.MatrixError;