getObjects method

Implementation

Future<List<AlgoliaQuerySnapshot>> getObjects() async {
  assert(queries != null && _queries!.isNotEmpty,
      'You require at least one query added before performing `.getObject()`');
  var requests = <Map<String, dynamic>>[];
  for (var q in _queries!) {
    var _q = q;
    if (_q.parameters.containsKey('minimumAroundRadius')) {
      assert(
          (_q.parameters.containsKey('aroundLatLng') ||
              _q.parameters.containsKey('aroundLatLngViaIP')),
          'This setting only works within the context of a circular geo search, enabled by `aroundLatLng` or `aroundLatLngViaIP`.');
    }
    if (_q.parameters['attributesToRetrieve'] == null) {
      _q = _q._copyWithParameters(<String, dynamic>{
        'attributesToRetrieve': const ['*']
      });
    }
    requests.add({
      'indexName': q._index,
      'params': _encodeMap(q.parameters),
    });
  }
  var response = await _algolia._apiCall(
    ApiRequestType.post,
    'indexes/*/queries',
    data: {
      'requests': requests,
      'strategy': 'none',
    },
  );
  Map<String, dynamic> body = json.decode(response.body);

  if (!(response.statusCode >= 200 && response.statusCode < 300)) {
    throw AlgoliaError._(body, response.statusCode);
  }

  var results = (body['results'] as List).cast<Map<String, dynamic>>();
  var snapshots = <AlgoliaQuerySnapshot>[];
  if (results.isNotEmpty) {
    for (var snap in results) {
      snapshots.add(AlgoliaQuerySnapshot._(_algolia, snap['index'], snap));
    }
  }
  return snapshots;
}