getPackage method
Implementation
Future<shelf.Response> getPackage(
shelf.Request req, String name, String version) async {
var pkg = await metaRepo.query(name);
if (pkg == null) {
return _pubDevPkg(name);
}
if (_isDartPubClient(req)) {
metaRepo.increaseDownloads(name, version);
}
final file =
File(packageStorage.getPackagePath(name: name, version: version));
if (!file.existsSync()) {
return shelf.Response.notFound('Package $name $version not found');
}
if (packageStorage.supportDownloadUrl) {
return shelf.Response.found(
await packageStorage.downloadUrl(name, version),
headers: _corsHeaders);
} else {
return shelf.Response.ok(file.openRead(), headers: {
HttpHeaders.contentLengthHeader: file.lengthSync().toString(),
HttpHeaders.contentTypeHeader: ContentType.binary.mimeType,
..._corsHeaders
});
}
}