badge method

  1. @Route.get('/badge/<type>/<name>')
Future<Response> badge(
  1. Request req,
  2. String type,
  3. String name
)

Implementation

@Route.get('/badge/<type>/<name>')
Future<shelf.Response> badge(
    shelf.Request req, String type, String name) async {
  var queryParameters = req.requestedUri.queryParameters;
  var package = await metaStore.queryPackage(name);
  if (package == null) {
    return shelf.Response.notFound('Not found');
  }

  switch (type) {
    case 'v':
      var latest = semver.Version.primary(package.versions
          .map((pv) => semver.Version.parse(pv.version))
          .toList());

      var color = latest.major == 0 ? 'orange' : 'blue';

      return shelf.Response.found(
          _getBadgeUrl('unpub', latest.toString(), color, queryParameters));
    case 'd':
      return shelf.Response.found(_getBadgeUrl(
          'downloads', package.download.toString(), 'blue', queryParameters));
    default:
      return shelf.Response.notFound('Not found');
  }
}