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);

  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.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;
}