getVisitorHistory method
Fetches visitor history using the provided VisitorHistoryFilter.
Implementation
Future<Map<String, dynamic>> getVisitorHistory(
VisitorHistoryFilter filter,
) async {
if (filter.visitorId == null || filter.visitorId!.isEmpty) {
throw SdkError(
message: 'Visitor ID is required to fetch history',
code: 'MISSING_VISITOR_ID',
details: 'Pass a valid visitorId in VisitorHistoryFilter.',
);
}
final queryParameters = filter.toJson()
..remove('visitorId'); // don't duplicate visitorId in query params
final queryString = queryParameters.entries
.map(
(e) =>
'${Uri.encodeComponent(e.key)}=${Uri.encodeComponent(e.value.toString())}',
)
.join('&');
final url = Uri.parse(
'$baseUrl/visitors/${filter.visitorId}/history?$queryString',
);
final response = await http
.get(
url,
headers: {
'Authorization': 'Bearer $apiKey',
'Content-Type': 'application/json',
},
)
.timeout(timeout);
if (response.statusCode == 200) {
return jsonDecode(response.body) as Map<String, dynamic>;
} else {
throw Exception(
'Failed to fetch visitor history [${response.statusCode}]: ${response.body}',
);
}
}