Skip to content

Commit 7d19888

Browse files
Release v1.6.8
1 parent c22a465 commit 7d19888

File tree

6 files changed

+94
-10
lines changed

6 files changed

+94
-10
lines changed

dist/dynamics-web-api-callbacks.js

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/*! dynamics-web-api-callbacks v1.6.7 (c) 2020 Aleksandr Rogov */
1+
/*! dynamics-web-api-callbacks v1.6.8 (c) 2020 Aleksandr Rogov */
22
(function webpackUniversalModuleDefinition(root, factory) {
33
if(typeof exports === 'object' && typeof module === 'object')
44
module.exports = factory();
@@ -2932,14 +2932,16 @@ function parseBatchHeaders(text) {
29322932
line = readLine(text, ctx);
29332933
parts = responseHeaderRegex.exec(line);
29342934
if (parts !== null) {
2935-
headers[parts[1]] = parts[2];
2935+
headers[parts[1].toLowerCase()] = parts[2];
29362936
}
29372937
else {
29382938
// Whatever was found is not a header, so reset the context position.
29392939
ctx.position = pos;
29402940
}
29412941
} while (line && parts);
29422942

2943+
normalizeHeaders(headers);
2944+
29432945
return headers;
29442946
}
29452947

@@ -2965,6 +2967,46 @@ function readTo(text, ctx, str) {
29652967
return text.substring(start, end);
29662968
}
29672969

2970+
function normalizeHeaders(headers) {
2971+
var keys = [];
2972+
for (var i = 0; i < headers.length; ++i) {
2973+
var key = normalizeHeader(headers[i]);
2974+
if (key.length > 0) {
2975+
keys.push(key);
2976+
}
2977+
}
2978+
return keys;
2979+
}
2980+
2981+
function normalizeHeader(header) {
2982+
var key = "";
2983+
var upperCase = false;
2984+
for (var i = 0; i < header.length; ++i) {
2985+
var letter = header[i];
2986+
if (letter === " " && key.length > 0) {
2987+
upperCase = true;
2988+
continue;
2989+
}
2990+
if (!isAlnum(letter)) {
2991+
continue;
2992+
}
2993+
if (key.length === 0 && isDigit(letter)) {
2994+
continue;
2995+
}
2996+
if (upperCase) {
2997+
upperCase = false;
2998+
key += letter.toUpperCase();
2999+
} else {
3000+
key += letter.toLowerCase();
3001+
}
3002+
}
3003+
return key;
3004+
}
3005+
3006+
function isDigit(char) {
3007+
return char >= "0" && char <= "9";
3008+
}
3009+
29683010
//partially taken from https://github.com/emiltholin/google-api-batch-utils
29693011
/**
29703012
*

dist/dynamics-web-api-callbacks.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/dynamics-web-api.js

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/*! dynamics-web-api v1.6.7 (c) 2020 Aleksandr Rogov */
1+
/*! dynamics-web-api v1.6.8 (c) 2020 Aleksandr Rogov */
22
(function webpackUniversalModuleDefinition(root, factory) {
33
if(typeof exports === 'object' && typeof module === 'object')
44
module.exports = factory();
@@ -2459,14 +2459,16 @@ function parseBatchHeaders(text) {
24592459
line = readLine(text, ctx);
24602460
parts = responseHeaderRegex.exec(line);
24612461
if (parts !== null) {
2462-
headers[parts[1]] = parts[2];
2462+
headers[parts[1].toLowerCase()] = parts[2];
24632463
}
24642464
else {
24652465
// Whatever was found is not a header, so reset the context position.
24662466
ctx.position = pos;
24672467
}
24682468
} while (line && parts);
24692469

2470+
normalizeHeaders(headers);
2471+
24702472
return headers;
24712473
}
24722474

@@ -2492,6 +2494,46 @@ function readTo(text, ctx, str) {
24922494
return text.substring(start, end);
24932495
}
24942496

2497+
function normalizeHeaders(headers) {
2498+
var keys = [];
2499+
for (var i = 0; i < headers.length; ++i) {
2500+
var key = normalizeHeader(headers[i]);
2501+
if (key.length > 0) {
2502+
keys.push(key);
2503+
}
2504+
}
2505+
return keys;
2506+
}
2507+
2508+
function normalizeHeader(header) {
2509+
var key = "";
2510+
var upperCase = false;
2511+
for (var i = 0; i < header.length; ++i) {
2512+
var letter = header[i];
2513+
if (letter === " " && key.length > 0) {
2514+
upperCase = true;
2515+
continue;
2516+
}
2517+
if (!isAlnum(letter)) {
2518+
continue;
2519+
}
2520+
if (key.length === 0 && isDigit(letter)) {
2521+
continue;
2522+
}
2523+
if (upperCase) {
2524+
upperCase = false;
2525+
key += letter.toUpperCase();
2526+
} else {
2527+
key += letter.toLowerCase();
2528+
}
2529+
}
2530+
return key;
2531+
}
2532+
2533+
function isDigit(char) {
2534+
return char >= "0" && char <= "9";
2535+
}
2536+
24952537
//partially taken from https://github.com/emiltholin/google-api-batch-utils
24962538
/**
24972539
*

dist/dynamics-web-api.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package-lock.json

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

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "dynamics-web-api",
3-
"version": "1.6.7",
3+
"version": "1.6.8",
44
"description": "DynamicsWebApi is a Microsoft Dynamics CRM Web API helper library",
55
"keywords": [
66
"crm",

0 commit comments

Comments
 (0)