- @override
Begins listening for HTTP requests on port.
Source
@override
Future open() async {
server = await HttpServer.bind(InternetAddress.LOOPBACK_IP_V4, port);
server.listen((HttpRequest req) async {
final mockReq = new MockHTTPRequest()
..method = req.method
..path = req.uri.path
..queryParameters = req.uri.queryParameters;
mockReq.headers = {};
req.headers.forEach((name, values) {
mockReq.headers[name] = values.join(",");
});
if (req.contentLength > 0) {
mockReq.body = new String.fromCharCodes(await req.first);
}
add(mockReq);
Response response;
Duration delay = defaultDelay;
if (_responseQueue.length > 0) {
final mockResp = _responseQueue.removeAt(0);
if (mockResp.response.statusCode == _mockConnectionFailureStatusCode) {
// We let this one die by not responding.
return null;
}
if (mockResp.delay != null) {
delay = mockResp.delay;
}
response = mockResp.response;
} else {
response = defaultResponse;
}
if (delay != null) {
await new Future.delayed(delay);
}
final wrappedReq = new Request(req);
wrappedReq.respond(response);
});
}