getVersion method

  1. @Route.get('/api/packages/<name>/versions/<version>')
Future<Response> getVersion(
  1. Request req,
  2. String name,
  3. String version
)

Implementation

@Route.get('/api/packages/<name>/versions/<version>')
Future<shelf.Response> getVersion(
    shelf.Request req, String name, String version) async {
  // Important: + -> %2B, should be decoded here
  try {
    version = Uri.decodeComponent(version);
  } catch (err) {
    print(err);
  }

  var package = await metaStore.queryPackage(name);
  if (package == null) {
    return shelf.Response.found(Uri.parse(upstream)
        .resolve('/api/packages/$name/versions/$version')
        .toString());
  }

  var packageVersion =
      package.versions.firstWhereOrNull((item) => item.version == version);
  if (packageVersion == null) {
    return shelf.Response.notFound('Not Found');
  }

  return _okWithJson(_versionToJson(packageVersion, req));
}