supporting last modified header
diff --git a/lib/shelf_static.dart b/lib/shelf_static.dart
index ee90ced..7f8bf2d 100644
--- a/lib/shelf_static.dart
+++ b/lib/shelf_static.dart
@@ -2,6 +2,7 @@
import 'dart:io';
+import 'package:http_parser/http_parser.dart';
import 'package:path/path.dart' as p;
import 'package:shelf/shelf.dart';
@@ -40,10 +41,11 @@
'is not under $fileSystemPath.';
}
- var stats = file.statSync();
+ var fileStat = file.statSync();
var headers = <String, String>{
- HttpHeaders.CONTENT_LENGTH: stats.size.toString()
+ HttpHeaders.CONTENT_LENGTH: fileStat.size.toString(),
+ HttpHeaders.LAST_MODIFIED: formatHttpDate(fileStat.changed)
};
return new Response.ok(file.openRead(), headers: headers);
diff --git a/pubspec.yaml b/pubspec.yaml
index a8a506e..a396681 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -6,6 +6,7 @@
environment:
sdk: '>=1.0.0 <2.0.0'
dependencies:
+ http_parser: '>=0.0.2 <0.1.0'
shelf: '>=0.5.0 <0.6.0'
dev_dependencies:
path: '>=1.1.0 <2.0.0'
diff --git a/test/sample_test.dart b/test/sample_test.dart
index 0c68871..3332dc6 100644
--- a/test/sample_test.dart
+++ b/test/sample_test.dart
@@ -16,7 +16,6 @@
});
// Content-Type:text/html
- // Date:Fri, 02 May 2014 22:29:02 GMT
});
group('/favicon.ico', () {
@@ -25,7 +24,6 @@
});
// Content-Type: ???
- // Date:Fri, 02 May 2014 22:29:02 GMT
});
}
@@ -34,10 +32,11 @@
var filePath = p.join(_samplePath, filename);
var file = new File(filePath);
var fileContents = file.readAsBytesSync();
- var length = file.statSync().size;
+ var fileStat = file.statSync();
return _request(new Request('GET', uri)).then((response) {
- expect(response.contentLength, length);
+ expect(response.contentLength, fileStat.size);
+ expect(response.lastModified, fileStat.changed.toUtc());
return _expectCompletesWithBytes(response, fileContents);
});
}