setup method
Setup.
configNetworkHttpConfig.
Implementation
setup({required NetworkHttpConfig config}) async {
_config = config;
_config.callbacks?.onDioSetup(_dio, true);
/// Encryptor.
_encryptor = ec.Encrypter(ec.AES(
ec.Key.fromUtf8(_config.base.aesKey ?? _kDefaultAesKey),
mode: ec.AESMode.cbc,
));
_iv = ec.IV.fromUtf8(_config.base.aesIv ?? _kDefaultAesIv);
/// Internal components.
_parser = NetworkHttpParser(http: this);
_downloader = NetworkHttpDownloader(http: this);
_uploader = NetworkHttpUploader(http: this);
_request = NetworkHttpRequest(http: this);
/// Timeout.
_dio.options.connectTimeout = Duration(
milliseconds: config.base.connectionTimeoutMs,
);
_dio.options.receiveTimeout = Duration(
milliseconds: config.base.receiveTimeoutMs,
);
/// Common headers.
_dio.interceptors
..add(PrettyDioLogger(
requestHeader: !kReleaseMode,
requestBody: !kReleaseMode,
responseBody: !kReleaseMode,
responseHeader: !kReleaseMode,
compact: true,
))
..add(InterceptorsWrapper(onRequest: (options, handler) async {
await _setupDeviceInfoIfNeeded(options.headers);
final token = _config.getters?.getUserToken(this) ?? '';
options.headers[HttpHeaders.authorizationHeader] = token;
options.headers[_config.keys.requestHeaderSource] = Platform.operatingSystem;
options.headers[_config.keys.requestHeaderDeviceId] = _deviceId;
options.headers[_config.keys.requestHeaderDeviceModel] = _deviceModel;
options.headers[_config.keys.requestHeaderDeviceBrand] = _deviceBrand;
options.headers[_config.keys.requestHeaderDeviceDisplay] = _deviceDisplay;
options.headers[_config.keys.requestHeaderDeviceHardware] = _deviceHardware;
options.headers[_config.keys.requestHeaderLanguage] = _language;
options.headers[_config.keys.requestHeaderBuildNo] = _buildNo;
options.headers[_config.keys.requestHeaderVersionName] = _version;
handler.next(options);
}, onResponse: (response, handler) {
handler.next(response);
}, onError: (exception, handler) {
handler.next(exception);
}));
/// Configuration callback.
_config.callbacks?.onDioSetup(_dio, false);
}