Client constructor

Client({
  1. String? userId,
  2. String? sessionId,
  3. Key? sessionPrivateKey,
  4. String? scp,
  5. String? baseUrl,
  6. String? accessToken,
  7. BaseOptions? dioOptions,
  8. JsonDecodeCallback? jsonDecodeCallback,
  9. Iterable<Interceptor> interceptors = const [],
  10. HttpLogLevel? httpLogLevel = HttpLogLevel.all,
})

Implementation

Client({
  String? userId,
  String? sessionId,
  Key? sessionPrivateKey,
  String? scp,
  String? baseUrl,
  String? accessToken,
  BaseOptions? dioOptions,
  JsonDecodeCallback? jsonDecodeCallback,
  Iterable<Interceptor> interceptors = const [],
  HttpLogLevel? httpLogLevel = HttpLogLevel.all,
}) {
  _dio = Dio(dioOptions);
  _dio.options.baseUrl = baseUrl ?? mixinBaseUrl0;
  _dio.options.responseType = ResponseType.json;
  _dio.options.contentType = Headers.jsonContentType;
  final transformer = dio.transformer;
  if (transformer is SyncTransformer && jsonDecodeCallback != null) {
    transformer.jsonDecodeCallback = jsonDecodeCallback;
  }
  _dio.interceptors.addAll(interceptors);
  _dio.interceptors.add(InterceptorsWrapper(
    onRequest: (
      RequestOptions options,
      RequestInterceptorHandler handler,
    ) async {
      var body = '';
      if (options.data != null) {
        body = jsonEncode(options.data);
      }

      final authToken = accessToken ??
          signAuthTokenWithEdDSA(
            userId,
            sessionId,
            sessionPrivateKey,
            scp,
            options.method,
            options.uri.toString().substring(options.baseUrl.length),
            body,
          );
      options.headers['Authorization'] = 'Bearer $authToken';
      handler.next(options);
    },
    onResponse:
        (Response<dynamic> response, ResponseInterceptorHandler handler) {
      final dynamic error = (response.data as Map)['error'];
      if (error == null) return handler.next(response);

      return handler.reject(
        MixinApiError(
          requestOptions: response.requestOptions,
          response: response,
          error: MixinError.fromJson(error as Map<String, dynamic>),
        ),
        true,
      );
    },
  ));
  if (httpLogLevel != null) {
    _dio.interceptors.add(MixinLogInterceptor(httpLogLevel));
  }
  _userApi = UserApi(dio: _dio);
  _provisioningApi = ProvisioningApi(dio: _dio);
  _accountApi = AccountApi(dio: _dio);
  _conversationApi = ConversationApi(dio: _dio);
  _messageApi = MessageApi(dio: _dio);
  _attachmentApi = AttachmentApi(dio: _dio);
  _circleApi = CircleApi(dio: _dio);
  _assetApi = AssetApi(dio: _dio);
  _tokenApi = TokenApi(dio: _dio);
  _oauthApi = OauthApi(dio: dio);
  _snapshotApi = SnapshotApi(dio: dio);
  _transferApi = TransferApi(dio: dio);
  _addressApi = AddressApi(dio: dio);
  _multisigApi = MultisigApi(dio: dio);
  _collectibleApi = CollectibleApi(dio: dio);
  _outputApi = OutputApi(dio: dio);
  _utxoApi = UtxoApi(accountApi, _tokenApi, dio: dio);
}