putCustomerInfo method

Upload customer information to an anchor in an authenticated and idempotent fashion.

Implementation

Future<PutCustomerInfoResponse> putCustomerInfo(
    PutCustomerInfoRequest request) async {
  Uri serverURI = Uri.parse(_serviceAddress + "/customer");

  _PutCustomerInfoRequestBuilder requestBuilder =
      _PutCustomerInfoRequestBuilder(httpClient, serverURI,
          httpRequestHeaders: this.httpRequestHeaders);

  final Map<String, String> fields = {};
  final Map<String, Uint8List> files = {};

  if (request.id != null) {
    fields["id"] = request.id!;
  }
  if (request.account != null) {
    fields["account"] = request.account!;
  }
  if (request.memo != null) {
    fields["memo"] = request.memo!;
  }
  if (request.memoType != null) {
    fields["memo_type"] = request.memoType!;
  }
  if (request.type != null) {
    fields["type"] = request.type!;
  }
  if (request.transactionId != null) {
    fields["transaction_id"] = request.transactionId!;
  }
  if (request.kycFields != null &&
      request.kycFields?.naturalPersonKYCFields != null) {
    fields.addAll(request.kycFields!.naturalPersonKYCFields!.fields());
  }
  if (request.kycFields != null &&
      request.kycFields?.organizationKYCFields != null) {
    fields.addAll(request.kycFields!.organizationKYCFields!.fields());
  }
  if (request.customFields != null) {
    fields.addAll(request.customFields!);
  }

  // files always at the end.
  if (request.kycFields != null &&
      request.kycFields?.naturalPersonKYCFields != null) {
    files.addAll(request.kycFields!.naturalPersonKYCFields!.files());
  }
  if (request.kycFields != null &&
      request.kycFields?.organizationKYCFields != null) {
    files.addAll(request.kycFields!.organizationKYCFields!.files());
  }
  if (request.customFiles != null) {
    files.addAll(request.customFiles!);
  }

  PutCustomerInfoResponse response = await requestBuilder
      .forFields(fields)
      .forFiles(files)
      .execute(request.jwt!);

  return response;
}