X Tutup
Skip to content

Commit b55f176

Browse files
committed
fix(Headers): serializable toJSON
fixes #6073 Closes #6714
1 parent 5e9daed commit b55f176

File tree

2 files changed

+49
-1
lines changed

2 files changed

+49
-1
lines changed

modules/angular2/src/http/headers.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
import {BaseException, WrappedException} from 'angular2/src/facade/exceptions';
1010
import {
1111
isListLikeIterable,
12+
iterateListLike,
1213
Map,
1314
MapWrapper,
1415
StringMapWrapper,
@@ -131,7 +132,17 @@ export class Headers {
131132
/**
132133
* Returns string of all headers.
133134
*/
134-
toJSON(): string { return Json.stringify(this.values()); }
135+
toJSON(): {[key: string]: any} {
136+
let serializableHeaders = {};
137+
this._headersMap.forEach((values: string[], name: string) => {
138+
let list = [];
139+
140+
iterateListLike(values, val => list = ListWrapper.concat(list, val.split(',')));
141+
142+
serializableHeaders[name] = list;
143+
});
144+
return serializableHeaders;
145+
}
135146

136147
/**
137148
* Returns list of header values for a given name.

modules/angular2/test/http/headers_spec.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import {Headers} from 'angular2/src/http/headers';
2+
import {Json} from 'angular2/src/facade/lang';
23
import {Map, StringMapWrapper} from 'angular2/src/facade/collection';
34
import {
45
AsyncTestCompleter,
@@ -62,6 +63,42 @@ export function main() {
6263
expect(/bar, ?baz/g.test(headers.getAll('foo')[0])).toBe(true);
6364
});
6465
});
66+
67+
68+
describe('.toJSON()', () => {
69+
let headers = null;
70+
let inputArr = null;
71+
let obj = null;
72+
73+
beforeEach(() => {
74+
headers = new Headers();
75+
inputArr = ['application/jeisen', 'application/jason', 'application/patrickjs'];
76+
obj = {'Accept': inputArr};
77+
headers.set('Accept', inputArr);
78+
});
79+
80+
81+
it('should be serializable with toJSON', () => {
82+
let stringifed = Json.stringify(obj);
83+
let serializedHeaders = Json.stringify(headers);
84+
expect(serializedHeaders).toEqual(stringifed);
85+
});
86+
87+
88+
it('should be able to parse serialized header', () => {
89+
let stringifed = Json.stringify(obj);
90+
let serializedHeaders = Json.stringify(headers);
91+
expect(Json.parse(serializedHeaders)).toEqual(Json.parse(stringifed));
92+
});
93+
94+
95+
it('should be able to recreate serializedHeaders', () => {
96+
let serializedHeaders = Json.stringify(headers);
97+
let parsedHeaders = Json.parse(serializedHeaders);
98+
let recreatedHeaders = new Headers(parsedHeaders);
99+
expect(Json.stringify(parsedHeaders)).toEqual(Json.stringify(recreatedHeaders));
100+
});
101+
});
65102
});
66103

67104
describe('.fromResponseHeaderString()', () => {

0 commit comments

Comments
 (0)
X Tutup