galileo_range_header 3.0.1
galileo_range_header: ^3.0.1 copied to clipboard
Range header parser for Dart. Beyond parsing, a stream transformer is included.
import 'dart:io';
import 'package:galileo_range_header/galileo_range_header.dart';
var file = new File('some_video.mp4');
handleRequest(HttpRequest request) async {
// Parse the header
var header = new RangeHeader.parse(request.headers.value(HttpHeaders.rangeHeader));
// Optimize/canonicalize it
var items = RangeHeader.foldItems(header.items);
header = new RangeHeader(items);
// Get info
header.items;
header.rangeUnit;
header.items.forEach((item) => item.toContentRange(400));
// Serve the file
var transformer = new RangeHeaderTransformer(header, 'video/mp4', await file.length());
await file.openRead().cast<List<int>>().transform(transformer).pipe(request.response);
}