Skip to content

Commit 7cdf511

Browse files
finishing tests, fixing issues
1 parent 099e6f5 commit 7cdf511

File tree

6 files changed

+1218
-396
lines changed

6 files changed

+1218
-396
lines changed

lib/helpers/ErrorHelper.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,8 @@ var ErrorHelper = {
171171

172172
batchIncompatible: function (functionName, isBatch) {
173173
if (isBatch) {
174-
throw new Error(functionName + " cannot be used in a BATCH request");
174+
isBatch = false;
175+
throw new Error(functionName + " cannot be used in a BATCH request.");
175176
}
176177
},
177178

lib/requests/helpers/parseResponse.js

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -140,14 +140,27 @@ function parseBatchResponse(response, parseParams, requestNumber) {
140140
var responseData = batchResponse.substring(batchResponse.indexOf("{"), batchResponse.lastIndexOf("}") + 1);
141141

142142
if (!responseData) {
143-
var entityUrl = /OData-EntityId.+/i.exec(batchResponse);
143+
if (/Content-Type: text\/plain/i.test(batchResponse)) {
144+
var plainContentReg = /\w+$/gi.exec(batchResponse.trim());
145+
var plainContent = plainContentReg && plainContentReg.length ? plainContentReg[0] : undefined;
144146

145-
if (entityUrl && entityUrl.length) {
146-
result.push(/([0-9A-F]{8}[-]?([0-9A-F]{4}[-]?){3}[0-9A-F]{12})\)$/i.exec(entityUrl[0])[1]);
147-
}
148-
else if (parseParams[i].hasOwnProperty('valueIfEmpty')) {
149-
result.push(parseParams[i].valueIfEmpty);
147+
//check if a plain content is a number or not
148+
result.push(isNaN(plainContent) ? plainContent : parseInt(plainContent));
150149
}
150+
else
151+
if (parseParams[requestNumber].hasOwnProperty('valueIfEmpty')) {
152+
result.push(parseParams[requestNumber].valueIfEmpty);
153+
}
154+
else {
155+
var entityUrl = /OData-EntityId.+/i.exec(batchResponse);
156+
157+
if (entityUrl && entityUrl.length) {
158+
result.push(/([0-9A-F]{8}[-]?([0-9A-F]{4}[-]?){3}[0-9A-F]{12})\)$/i.exec(entityUrl[0])[1]);
159+
}
160+
else {
161+
result.push(undefined);
162+
}
163+
}
151164
}
152165
else {
153166
result.push(parseData(JSON.parse(responseData, dateReviver), parseParams[requestNumber]));
@@ -182,16 +195,17 @@ module.exports = function parseResponse(response, responseHeaders, parseParams)
182195
}
183196
}
184197
else {
185-
if (responseHeaders['OData-EntityId'] || responseHeaders['odata-entityid']) {
186-
var entityUrl = responseHeaders['OData-EntityId']
187-
? responseHeaders['OData-EntityId']
188-
: responseHeaders['odata-entityid'];
189-
190-
parseResult = /([0-9A-F]{8}[-]?([0-9A-F]{4}[-]?){3}[0-9A-F]{12})\)$/i.exec(entityUrl)[1];
191-
}
192-
else if (parseParams.length && parseParams[0].hasOwnProperty('valueIfEmpty')) {
198+
if (parseParams.length && parseParams[0].hasOwnProperty('valueIfEmpty')) {
193199
parseResult = parseParams[0].valueIfEmpty;
194200
}
201+
else
202+
if (responseHeaders['OData-EntityId'] || responseHeaders['odata-entityid']) {
203+
var entityUrl = responseHeaders['OData-EntityId']
204+
? responseHeaders['OData-EntityId']
205+
: responseHeaders['odata-entityid'];
206+
207+
parseResult = /([0-9A-F]{8}[-]?([0-9A-F]{4}[-]?){3}[0-9A-F]{12})\)$/i.exec(entityUrl)[1];
208+
}
195209
}
196210

197211
return parseResult;

lib/utilities/BatchConverter.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ var convertToBatch = function (requests) {
5151
}
5252
else {
5353
batchBody.push('Content-Type: application/json');
54-
batchBody.push('\n' + request.data);
5554
}
5655

5756
for (var key in request.headers) {
@@ -60,6 +59,10 @@ var convertToBatch = function (requests) {
6059

6160
batchBody.push(key + ': ' + request.headers[key]);
6261
}
62+
63+
if (!isGet && request.data && request.data.length) {
64+
batchBody.push('\n' + request.data);
65+
}
6366
}
6467

6568
if (currentChangeSet) {

0 commit comments

Comments
 (0)