BellaClient constructor

BellaClient(
  1. BellaClientOptions options
)

Implementation

BellaClient(BellaClientOptions options) {
  _cache = options.cache;
  final resolvedAppClient =
      options.appClient ?? Platform.environment['BELLA_BAXTER_APP_CLIENT'];

  final dio = Dio(BaseOptions(
    baseUrl: options.baseUrl,
    connectTimeout: options.connectTimeout,
    receiveTimeout: options.receiveTimeout,
  ));

  if (options.apiKey != null) {
    final parsed = _parseBaxToken(options.apiKey!);
    dio.interceptors.add(_BellaHmacInterceptor(
      keyId: parsed.keyId,
      signingSecret: parsed.signingSecret,
      appClient: resolvedAppClient,
    ));
  } else {
    dio.interceptors.add(_BellaBearerInterceptor(
      accessToken: options.accessToken!,
      appClient: resolvedAppClient,
    ));
  }

  // E2EE: transparently encrypts the secrets request / decrypts the response.
  // ZKE: when privateKey is set, uses the persistent device key; otherwise
  //      generates an ephemeral key pair (default behaviour).
  dio.interceptors.add(BellaE2eeInterceptor(
    privateKeyBytes: options.privateKey,
    onWrappedDekReceived: options.onWrappedDekReceived,
  ));

  _api = BellaBaxter(dio: dio);
}