search method
Future<Map<String, dynamic> >
search(
- GlpiItemType itemType, {
- List<
GlpiSearchCriteria> ? criteria, - List<
GlpiSearchCriteria> ? metaCriteria, - int sort = 1,
- String order = 'ASC',
- int rangeStart = 0,
- int rangeLimit = 50,
- List<
String> ? forceDisplay = const [], - bool rawData = false,
- bool withIndexes = false,
- bool uidCols = false,
- bool giveItems = false,
override
** This method is untested for the moment ** Return items found using the GLPI searchEngine Reference: https://github.com/glpi-project/glpi/blob/master/apirest.md#search-items
Implementation
@override
Future<Map<String, dynamic>> search(
GlpiItemType itemType, {
List<GlpiSearchCriteria>? criteria,
List<GlpiSearchCriteria>? metaCriteria,
int sort = 1,
String order = 'ASC',
int rangeStart = 0,
int rangeLimit = 50,
List<String>? forceDisplay = const [],
bool rawData = false,
bool withIndexes = false,
bool uidCols = false,
bool giveItems = false,
}) async {
if (sessionToken!.isEmpty) {
throw Exception('No session token, initSession first');
}
final Map<String, String> headers = {
'Session-Token': sessionToken!,
'Content-Type': 'application/json',
...?appToken != null ? {'App-Token': appToken!} : null,
};
final queryParameters = <String, String>{};
if (criteria != null) {
for (var i = 0; i < criteria.length; i++) {
queryParameters.addAll(criteria[i].toUrlParameters(i));
}
}
if (metaCriteria != null) {
for (var i = 0; i < metaCriteria.length; i++) {
queryParameters.addAll(metaCriteria[i].toUrlParameters(i));
}
}
if (forceDisplay != null) {
for (var i = 0; i < forceDisplay.length; i++) {
queryParameters.addAll({'force_display[$i]': forceDisplay[i]});
}
}
final queryUrl = queryParameters.isNotEmpty
? '&${queryParameters.keys.map((key) => '$key=${queryParameters[key]}').join('&')}'
: '';
final uri = Uri.parse(
'$host/search/${itemType.toString().split('.').last}?sort=$sort&order=$order&range$rangeStart-$rangeLimit&raw_data=$rawData&with_indexes=$withIndexes&uid_cols=$uidCols&give_items=$giveItems$queryUrl');
final response = await _innerClient.get(uri, headers: headers);
if (response.statusCode != 200 && response.statusCode != 206) {
throw GlpiException.fromResponse(
response.statusCode, json.decode(response.body));
}
return Future.value(json.decode(response.body));
}