getPackages method

Future<Response> getPackages(
  1. Request req
)

Implementation

Future<shelf.Response> getPackages(shelf.Request req) async {
  var params = req.requestedUri.queryParameters;
  var size = int.tryParse(params['size'] ?? '') ?? 10;
  var page = int.tryParse(params['page'] ?? '') ?? 0;
  var sort = params['sort'] ?? 'download';
  var q = params['q'] ?? '';

  String? keyword, uploader, dependency;
  keyword = q;
  if (q.startsWith('email:') == true) {
    uploader = q.substring(6).trim();
  } else if (q.startsWith('depdendency:') == true) {
    dependency = q.substring(11).trim();
  }
  var pkgs = await metaRepo.queries(
      size: size,
      page: page,
      sort: sort,
      keyword: keyword,
      uploader: uploader,
      dependency: dependency);
  var data = pkgs
      .map((it) => Package(
              name: it.name,
              description: it.versions.last.pubspec['description'],
              tags: _getPkgTags(it.versions.last.pubspec),
              latest: it.versions.last.version,
              updatedAt: it.updatedAt)
          .toJson())
      .toList();
  return _ok({'data': jsonEncode(data)});
}