queryUrl method

  1. @override
Uri queryUrl(
  1. String query, {
  2. Map<String, dynamic>? params,
  3. LiveConfig? live,
})
override

Builds a URL for a GROQ query.

Implementation

@override
Uri queryUrl(String query, {Map<String, dynamic>? params, LiveConfig? live}) {
  final queryParameters = <String, dynamic>{
    if (query.trim().isNotEmpty) 'query': query,
    'explain': config.explainQuery.toString(),
    if (config.useCdn == false) 'perspective': config.perspective.name,
    if (live?.includeDrafts == true) 'includeDrafts': 'true',

    // Params are a bit special as we interpret every param as one used in the GROQ Query
    // https://www.sanity.io/docs/groq-parameters
    // Hence the prefixing of the param with $ and double-quoting the param-value
    if (params != null)
      ...params.map((key, value) => MapEntry('\$$key', '"$value"')),
  };

  final isLive = live != null;

  final host =
      '${config.projectId}.${isLive ? 'api' : (config.useCdn ? 'apicdn' : 'api')}.sanity.io';
  final path =
      '/${isLive ? 'vX' : config.apiVersion}/data/${isLive ? 'live/events' : 'query'}/${config.dataset}';

  return Uri(
    scheme: 'https',
    host: host,
    path: path,
    queryParameters: queryParameters,
  );
}