FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Multiple headers with the same fixed · NativeScript/NativeScript@57a6996 · GitHub

Commit 57a6996

Browse files
Vladimir Enchev
committed
Multiple headers with the same fixed
1 parent 3ce5df0 commit 57a6996

5 files changed

Lines changed: 39 additions & 6 deletions

File tree

‎apps/tests/http-tests.ts‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -535,6 +535,21 @@ export var test_request_headersSentAndReceivedProperly = function (done) {
535535
});
536536
};
537537

538+
export var test_request_headersWithSameKeyAddedProperly = function (done) {
539+
var headers = {};
540+
541+
(<any>http).addHeader(headers, "key", "value1");
542+
(<any>http).addHeader(headers, "key", "value2");
543+
544+
try {
545+
TKUnit.assert(Array.isArray(headers["key"]), "Headers with same key not added properly!");
546+
done(null);
547+
}
548+
catch (err) {
549+
done(err);
550+
}
551+
};
552+
538553
export var test_request_contentSentAndReceivedProperly = function (done) {
539554
var result;
540555

‎http/http-request.android.ts‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,16 @@ function onRequestComplete(requestId: number, result: com.tns.Async.Http.Request
5858
}
5959

6060
// read the headers
61-
var headers = {};
61+
var headers: http.Headers = {};
6262
if (result.headers) {
6363
var jHeaders = result.headers;
6464
var length = jHeaders.size();
6565
var i;
6666
var pair: com.tns.Async.Http.KeyValuePair;
6767
for (i = 0; i < length; i++) {
6868
pair = jHeaders.get(i);
69-
headers[pair.key] = pair.value;
69+
70+
(<any>http).addHeader(headers, pair.key, pair.value);
7071
}
7172
}
7273

‎http/http-request.ios.ts‎

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,14 +60,16 @@ export function request(options: http.HttpRequestOptions): Promise<http.HttpResp
6060
if (error) {
6161
reject(new Error(error.localizedDescription));
6262
} else {
63-
var headers = {};
63+
var headers: http.Headers = {};
6464
if (response && response.allHeaderFields) {
6565
var headerFields = response.allHeaderFields;
6666
var keys = headerFields.allKeys;
6767

6868
for (var i = 0, l = keys.count; i < l; i++) {
69-
var key = keys.objectAtIndex(i);
70-
headers[key] = headerFields.valueForKey(key);
69+
let key = keys.objectAtIndex(i);
70+
let value = headerFields.valueForKey(key);
71+
72+
(<any>http).addHeader(headers, key, value);
7173
}
7274
}
7375

‎http/http.d.ts‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,13 +103,15 @@ declare module "http" {
103103
/**
104104
* Gets the response headers.
105105
*/
106-
headers: any;
106+
headers: Headers;
107107

108108
/**
109109
* Gets the response content.
110110
*/
111111
content?: HttpContent;
112112
}
113+
114+
export type Headers = { [key: string]: string | string[] };
113115

114116
/**
115117
* Encapsulates the content of an HttpResponse.

‎http/http.ts‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import image = require("image-source");
22
import httpRequest = require("http/http-request");
3+
import dts = require("http");
34

45
global.moduleMerge(httpRequest, exports);
56

@@ -52,4 +53,16 @@ export function getFile(arg: any, destinationFilePath?: string): Promise<any> {
5253
}
5354
}, e => reject(e));
5455
});
56+
}
57+
58+
export function addHeader(headers: dts.Headers, key: string, value: string): void{
59+
if(!headers[key]) {
60+
headers[key] = value;
61+
} else if (Array.isArray(headers[key])){
62+
(<string[]>headers[key]).push(value);
63+
} else {
64+
let values: string[] = [<string>headers[key]];
65+
values.push(value);
66+
headers[key] = values;
67+
}
5568
}

0 commit comments

Comments
 (0)

Back | FazBrowse Home | New Git URL