assembleQuery function

String assembleQuery(
  1. String base, {
  2. RQLQuery? rqlFilter,
  3. NamespaceQuery? namespaceQuery,
  4. FieldQuery? fieldQuery,
  5. OptionQuery? optionQuery,
})

Returns a String which includes the base and the given rqlFilter, namespaceQuery, fieldQuery and optionQuery if they aren't null.

The String is ready to use in a request to the Directory/Repository

Implementation

String assembleQuery(String base,
    {RQLQuery? rqlFilter,
    NamespaceQuery? namespaceQuery,
    FieldQuery? fieldQuery,
    OptionQuery? optionQuery}) {
  String path = base;
  if (rqlFilter != null ||
      namespaceQuery != null ||
      fieldQuery != null ||
      optionQuery != null) {
    path += '?';
    if (rqlFilter != null) {
      path += 'filter=${rqlFilter.generateString()}';
      if (namespaceQuery != null || fieldQuery != null || optionQuery != null)
        path += '&';
    }
    if (namespaceQuery != null) {
      path += namespaceQuery.generateString();
      if (fieldQuery != null || optionQuery != null) path += '&';
    }
    if (fieldQuery != null) {
      path += fieldQuery.generateString();
      if (optionQuery != null) path += '&';
    }
    if (optionQuery != null) {
      path += optionQuery.generateString();
    }
  }
  //return Uri.encodeFull(path);
  return path;
}