settingsFor method
Implementation
Future<JournifyAPISettings?> settingsFor(String writeKey) async {
final settingsURL = _url(
_analytics.target!.state.configuration.state.cdnHost,
"/$writeKey.json");
final urlRequest = _configuredRequest(settingsURL, "GET");
try {
final response = await urlRequest.send();
if (response.statusCode > 300) {
reportInternalError(NetworkUnexpectedHTTPCode(response.statusCode),
analytics: _analytics.target);
return null;
}
// Read the response stream to bytes
final data = await response.stream.toBytes();
// Decode the bytes to a UTF-8 string
final responseBody = utf8.decode(data);
// Parse the JSON
const decoder = JsonDecoder();
final jsonMap = decoder.convert(responseBody) as Map<String, dynamic>;
final settingsJournify = JournifySettingsResponse.fromJson(jsonMap);
final settingsJournifyIntegrations =
settingsJournify.syncs.fold<Map<String, dynamic>>(
{},
(acc, sync) => {...acc, sync['destination_app']: sync},
);
return JournifyAPISettings(settingsJournifyIntegrations);
} catch (error) {
reportInternalError(NetworkUnknown(error.toString()),
analytics: _analytics.target);
return null;
}
}