call method
Implementation
void call(Context ctx) async {
final matcher = new RouteMatcher();
var uriParts = uri.split('/');
uriParts.removeWhere((str) => str.isEmpty);
var pathParts = ctx.req.requestedUri.path.split('/');
pathParts.removeWhere((str) => str.isEmpty);
final minLength = min(uriParts.length, pathParts.length);
uriParts = uriParts.sublist(0, minLength);
pathParts = pathParts.sublist(0, minLength);
print(uriParts.join('/') + '=' + pathParts.join('/'));
matcher.match(uriParts.join('/'), pathParts.join('/'));
if (matcher.matched) {
var path = ctx.req.requestedUri.path;
if (directory != this.uri) {
path = path.replaceFirst(this.uri, directory);
}
final uri = Uri.parse(_dir + path);
var file = File.fromUri(uri);
final fileExists = file.existsSync();
if (!fileExists) {
final uri = Uri.parse(_dir + directory + '/' + index);
file = File.fromUri(uri);
}
final mime = lookupMimeType(file.path);
ctx.res.headers.add('content-type', mime!);
ctx.res.statusCode = 200;
await ctx.res.response.addStream(file.openRead());
ctx.res.close();
}
}