Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(30)

Side by Side Diff: third_party/pkg/angular/lib/playback/playback_http.dart

Issue 124053002: Adding Angular and dependent packages for testing (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 library angular.playback.playback_http;
2
3 import 'dart:async';
4 import 'dart:convert' show JSON;
5 import 'dart:html';
6
7 import 'package:angular/core_dom/module.dart';
8 import 'package:angular/mock/module.dart' as mock;
9
10 import 'playback_data.dart' as playback_data;
11
12 class PlaybackHttpBackendConfig {
13 requestKey(String url,
14 {String method, bool withCredentials, String responseType,
15 String mimeType, Map<String, String> requestHeaders, sendData,
16 void onProgress(ProgressEvent e)}) {
17 return JSON.encode({
18 "url": url,
19 "method": method,
20 "requestHeaders": requestHeaders,
21 "data": sendData
22 });
23 }
24 }
25
26 // HELP! The DI system is getting in the way. We want
27 // the HttpBackend, but it will be implemented by ourselves.
28 class HttpBackendWrapper {
29 HttpBackend backend;
30 HttpBackendWrapper(HttpBackend this.backend);
31 }
32
33 class RecordingHttpBackend implements HttpBackend {
34
35 HttpBackend _prodBackend;
36 PlaybackHttpBackendConfig _config;
37
38 RecordingHttpBackend(HttpBackendWrapper wrapper, this._config) {
39 this._prodBackend = wrapper.backend;
40 }
41
42 Future request(String url,
43 {String method, bool withCredentials, String responseType,
44 String mimeType, Map<String, String> requestHeaders, sendData,
45 void onProgress(ProgressEvent e)}) {
46 return _prodBackend.request(url,
47 method: method,
48 withCredentials: withCredentials,
49 responseType: responseType,
50 mimeType: mimeType,
51 requestHeaders: requestHeaders,
52 sendData: sendData,
53 onProgress: onProgress).then((HttpRequest r) {
54
55 var key = _config.requestKey(url,
56 method: method,
57 withCredentials: withCredentials,
58 responseType: responseType,
59 mimeType: mimeType,
60 requestHeaders: requestHeaders,
61 sendData: sendData,
62 onProgress: onProgress);
63
64 assert(key is String);
65 _prodBackend.request('/record', //TODO make this URL configurable.
66 method: 'POST', sendData: JSON.encode({
67 "key": key, "data": JSON.encode({
68 "status": r.status,
69 "headers": r.getAllResponseHeaders(),
70 "data": r.responseText})
71 }));
72 return r;
73 });
74 }
75 }
76
77 class PlaybackHttpBackend implements HttpBackend {
78
79 PlaybackHttpBackendConfig _config;
80
81 PlaybackHttpBackend(this._config);
82
83 Map data = playback_data.playbackData;
84
85 Future request(String url,
86 {String method, bool withCredentials, String responseType,
87 String mimeType, Map<String, String> requestHeaders, sendData,
88 void onProgress(ProgressEvent e)}) {
89 var key = _config.requestKey(url,
90 method: method,
91 withCredentials: withCredentials,
92 responseType: responseType,
93 mimeType: mimeType,
94 requestHeaders: requestHeaders,
95 sendData: sendData,
96 onProgress: onProgress);
97
98 if (!data.containsKey(key)) {
99 throw ["Request is not recorded $key"];
100 }
101 var playback = data[key];
102 return new Future.value(
103 new mock.MockHttpRequest(
104 playback['status'],
105 playback['data'],
106 playback['headers']));
107 }
108 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698