queryUrl method
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,
);
}