@@ -59,12 +59,14 @@ class XhrTransportStream implements GrpcTransportStream {
59
59
if (_incomingProcessor.isClosed) {
60
60
return ;
61
61
}
62
- // TODO: dart-lang/web#285 use 'if' for now
63
- if (_request.readyState == XMLHttpRequest .HEADERS_RECEIVED ) {
64
- _onHeadersReceived ();
65
- } else if (_request.readyState == XMLHttpRequest .DONE ) {
66
- _onRequestDone ();
67
- _close ();
62
+ switch (_request.readyState) {
63
+ case XMLHttpRequest .HEADERS_RECEIVED :
64
+ _onHeadersReceived ();
65
+ break ;
66
+ case XMLHttpRequest .DONE :
67
+ _onRequestDone ();
68
+ _close ();
69
+ break ;
68
70
}
69
71
});
70
72
@@ -99,7 +101,7 @@ class XhrTransportStream implements GrpcTransportStream {
99
101
bool _validateResponseState () {
100
102
try {
101
103
validateHttpStatusAndContentType (
102
- _request.status, _parseHeaders ( _request.getAllResponseHeaders ()) ,
104
+ _request.status, _request.responseHeaders ,
103
105
rawResponse: _request.responseText);
104
106
return true ;
105
107
} catch (e, st) {
@@ -113,8 +115,7 @@ class XhrTransportStream implements GrpcTransportStream {
113
115
if (! _validateResponseState ()) {
114
116
return ;
115
117
}
116
- _incomingMessages
117
- .add (GrpcMetadata (_parseHeaders (_request.getAllResponseHeaders ())));
118
+ _incomingMessages.add (GrpcMetadata (_request.responseHeaders));
118
119
}
119
120
120
121
void _onRequestDone () {
@@ -138,20 +139,6 @@ class XhrTransportStream implements GrpcTransportStream {
138
139
_onDone (this );
139
140
}
140
141
141
- Map <String , String > _parseHeaders (String rawHeaders) {
142
- final headers = < String , String > {};
143
- final lines = rawHeaders.split ('\r\n ' );
144
- for (var line in lines) {
145
- final index = line.indexOf (': ' );
146
- if (index != - 1 ) {
147
- final key = line.substring (0 , index);
148
- final value = line.substring (index + 2 );
149
- headers[key] = value;
150
- }
151
- }
152
- return headers;
153
- }
154
-
155
142
@override
156
143
Future <void > terminate () async {
157
144
_close ();
0 commit comments