Skip to content

Commit 69c6635

Browse files
committed
Rebuild CAPI
1 parent 3c6e1fe commit 69c6635

File tree

2 files changed

+124
-15
lines changed

2 files changed

+124
-15
lines changed

dist/CAPI-min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/CAPI.js

Lines changed: 123 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1134,41 +1134,80 @@ define('ConnectionManager',["structures/Response", "structures/Request", "struct
11341134
* @param [url="/"] {String} requested REST resource
11351135
* @param [body=""] {String} a string which should be passed in request body to the REST service
11361136
* @param [headers={}] {object} object literal describing request headers
1137+
* @param [requestEventHandlers] {Object} a set of callbacks to apply on a specific XHR event like onload, onerror, onprogress, etc.
11371138
* @param callback {Function} function, which will be executed on request success
1139+
* @example
1140+
* var connectionManager = jsCAPI.getConnectionManager();
1141+
*
1142+
* connectionManager.request(
1143+
* 'GET',
1144+
* '/endpoint',
1145+
* '',
1146+
* {Accept: 'application/json'},
1147+
* {
1148+
* upload: {
1149+
* onloadstart: someUploadCallback,
1150+
* onload: someUploadCallback,
1151+
* onloadend: someUploadCallback,
1152+
* onprogress: someUploadCallback,
1153+
* onabort: someUploadCallback,
1154+
* onerror: someUploadCallback,
1155+
* ontimeout: someUploadCallback,
1156+
* },
1157+
* onloadstart: someCallback,
1158+
* onload: someCallback,
1159+
* onloadend: someCallback,
1160+
* onprogress: someCallback,
1161+
* onabort: someCallback,
1162+
* onerror: someCallback,
1163+
* ontimeout: someCallback,
1164+
* },
1165+
* callback
1166+
* );
11381167
*/
1139-
ConnectionManager.prototype.request = function (method, url, body, headers, callback) {
1168+
ConnectionManager.prototype.request = function (method, url, body, headers, requestEventHandlers, callback) {
11401169
var that = this,
11411170
request,
11421171
nextRequest,
11431172
defaultMethod = "GET",
11441173
defaultUrl = "/",
11451174
defaultBody = "",
1146-
defaultHeaders = {};
1175+
defaultHeaders = {},
1176+
defaultRequestEventHandlers = {};
11471177

11481178
// default values for omitted parameters (if any)
1149-
if (arguments.length < 5) {
1150-
if (typeof method == "function") {
1151-
//no optional parameteres are passed
1179+
if (arguments.length < 6) {
1180+
if (typeof method === 'function') {
1181+
// no optional parameteres are passed
11521182
callback = method;
11531183
method = defaultMethod;
11541184
url = defaultUrl;
11551185
body = defaultBody;
11561186
headers = defaultHeaders;
1157-
} else if (typeof url == "function") {
1187+
requestEventHandlers = defaultRequestEventHandlers;
1188+
} else if (typeof url === 'function') {
11581189
// only first 1 optional parameter is passed
1190+
requestEventHandlers = body;
11591191
callback = url;
11601192
url = defaultUrl;
11611193
body = defaultBody;
11621194
headers = defaultHeaders;
1163-
} else if (typeof body == "function") {
1195+
requestEventHandlers = defaultRequestEventHandlers;
1196+
} else if (typeof body === 'function') {
11641197
// only first 2 optional parameters are passed
11651198
callback = body;
11661199
body = defaultBody;
11671200
headers = defaultHeaders;
1168-
} else {
1201+
requestEventHandlers = defaultRequestEventHandlers;
1202+
} else if (typeof headers === 'function') {
11691203
// only first 3 optional parameters are passed
11701204
callback = headers;
11711205
headers = defaultHeaders;
1206+
requestEventHandlers = defaultRequestEventHandlers;
1207+
} else if (typeof requestEventHandlers === 'function') {
1208+
// only first 4 optional parameters are passed
1209+
callback = requestEventHandlers;
1210+
requestEventHandlers = defaultRequestEventHandlers;
11721211
}
11731212
}
11741213

@@ -1225,7 +1264,7 @@ define('ConnectionManager',["structures/Response", "structures/Request", "struct
12251264
console.dir(request);
12261265
}
12271266
// Main goal
1228-
that._connectionFactory.createConnection().execute(authenticatedRequest, callback);
1267+
that._connectionFactory.createConnection().execute(authenticatedRequest, requestEventHandlers, callback);
12291268
}
12301269
);
12311270
} // while
@@ -1363,22 +1402,37 @@ define('connections/XmlHttpRequestConnection',["structures/Response", "structure
13631402
* @constructor
13641403
*/
13651404
var XmlHttpRequestConnection = function () {
1366-
this._xhr = new XMLHttpRequest();
1367-
};
1405+
this._xhr = new XMLHttpRequest();
1406+
},
1407+
_assignCallback = function(xhr, eventName, callback) {
1408+
if (typeof callback !== 'function') {
1409+
return xhr;
1410+
}
1411+
1412+
xhr[eventName] = callback;
1413+
1414+
return xhr;
1415+
};
13681416

13691417
/**
13701418
* Basic request implemented via XHR technique
13711419
*
13721420
* @method execute
13731421
* @param request {Request} structure containing all needed params and data
1422+
* @param [requestEventHandlers] {Object} a set of callbacks to apply on a specific XHR event like onload, onerror, onprogress, etc.
13741423
* @param callback {Function} function, which will be executed on request success
13751424
*/
1376-
XmlHttpRequestConnection.prototype.execute = function (request, callback) {
1425+
XmlHttpRequestConnection.prototype.execute = function (request, requestEventHandlers, callback) {
13771426
var XHR = this._xhr,
13781427
headerType,
13791428
method = request.method,
13801429
standardMethods = {"OPTIONS": 1, "GET": 1, "HEAD": 1, "POST": 1, "PUT": 1, "DELETE": 1, "TRACE": 1};
13811430

1431+
if (typeof requestEventHandlers === 'function') {
1432+
callback = requestEventHandlers;
1433+
requestEventHandlers = {};
1434+
}
1435+
13821436
// Create the state change handler:
13831437
XHR.onreadystatechange = function () {
13841438
var response;
@@ -1407,6 +1461,26 @@ define('connections/XmlHttpRequestConnection',["structures/Response", "structure
14071461
method = "POST";
14081462
}
14091463

1464+
if (requestEventHandlers && Object.keys(requestEventHandlers).length) {
1465+
if (requestEventHandlers.upload && Object.keys(requestEventHandlers.upload).length) {
1466+
_assignCallback(XHR.upload, 'onloadstart', requestEventHandlers.upload.onloadstart);
1467+
_assignCallback(XHR.upload, 'onload', requestEventHandlers.upload.onload);
1468+
_assignCallback(XHR.upload, 'onloadend', requestEventHandlers.upload.onloadend);
1469+
_assignCallback(XHR.upload, 'onprogress', requestEventHandlers.upload.onprogress);
1470+
_assignCallback(XHR.upload, 'onabort', requestEventHandlers.upload.onabort);
1471+
_assignCallback(XHR.upload, 'onerror', requestEventHandlers.upload.onerror);
1472+
_assignCallback(XHR.upload, 'ontimeout', requestEventHandlers.upload.ontimeout);
1473+
}
1474+
1475+
_assignCallback(XHR, 'onloadstart', requestEventHandlers.onloadstart);
1476+
_assignCallback(XHR, 'onload', requestEventHandlers.onload);
1477+
_assignCallback(XHR, 'onloadend', requestEventHandlers.onloadend);
1478+
_assignCallback(XHR, 'onprogress', requestEventHandlers.onprogress);
1479+
_assignCallback(XHR, 'onabort', requestEventHandlers.onabort);
1480+
_assignCallback(XHR, 'onerror', requestEventHandlers.onerror);
1481+
_assignCallback(XHR, 'ontimeout', requestEventHandlers.ontimeout);
1482+
}
1483+
14101484
if (request.httpBasicAuth) {
14111485
XHR.open(method, request.url, true, request.login, request.password);
14121486
} else {
@@ -3599,12 +3673,46 @@ define('services/ContentService',["structures/ContentCreateStruct", "structures/
35993673
*
36003674
* @method createContent
36013675
* @param contentCreateStruct {ContentCreateStruct} object describing content to be created
3676+
* @param [requestEventHandlers] {Object} a set of callbacks to apply on a specific XHR event like onload, onerror, onprogress, etc.
36023677
* @param callback {Function} callback executed after performing the request (see
36033678
* {{#crossLink "ContentService"}}Note on the callbacks usage{{/crossLink}} for more info)
3679+
* @example
3680+
* var contentService = jsCAPI.getContentService();
3681+
*
3682+
* contentService.createContent(
3683+
* {
3684+
* body: '',
3685+
* headers: {}
3686+
* },
3687+
* {
3688+
* upload: {
3689+
* onloadstart: someUploadCallback,
3690+
* onload: someUploadCallback,
3691+
* onloadend: someUploadCallback,
3692+
* onprogress: someUploadCallback,
3693+
* onabort: someUploadCallback,
3694+
* onerror: someUploadCallback,
3695+
* ontimeout: someUploadCallback,
3696+
* },
3697+
* onloadstart: someCallback,
3698+
* onload: someCallback,
3699+
* onloadend: someCallback,
3700+
* onprogress: someCallback,
3701+
* onabort: someCallback,
3702+
* onerror: someCallback,
3703+
* ontimeout: someCallback,
3704+
* },
3705+
* callback
3706+
* );
36043707
*/
3605-
ContentService.prototype.createContent = function (contentCreateStruct, callback) {
3708+
ContentService.prototype.createContent = function (contentCreateStruct, requestEventHandlers, callback) {
36063709
var that = this;
36073710

3711+
if (typeof requestEventHandlers === 'function') {
3712+
callback = requestEventHandlers;
3713+
requestEventHandlers = {};
3714+
}
3715+
36083716
this._discoveryService.getInfoObject(
36093717
"content",
36103718
function (error, contentObjects) {
@@ -3618,6 +3726,7 @@ define('services/ContentService',["structures/ContentCreateStruct", "structures/
36183726
contentObjects._href,
36193727
JSON.stringify(contentCreateStruct.body),
36203728
contentCreateStruct.headers,
3729+
requestEventHandlers,
36213730
callback
36223731
);
36233732
}
@@ -4322,7 +4431,7 @@ define('services/ContentService',["structures/ContentCreateStruct", "structures/
43224431
if ( viewCreateStruct.getCriteria() && Object.keys(viewCreateStruct.getCriteria()).length !== 0 ) {
43234432
console.warn('[DEPRECATED] virtual property Criteria is deprecated');
43244433
}
4325-
4434+
43264435
that._connectionManager.request(
43274436
"POST",
43284437
views._href,

0 commit comments

Comments
 (0)