public override Task <GetApprovalResponse> GetApprovalResults(GetApprovalResultsRequest request, ServerCallContext context) { var vaultId = context.GetVaultId(); var list = _dataReader.Get() .Where(e => e.VaultId == vaultId) .Where(e => !e.IsOpen) .ToList(); var resp = new GetApprovalResponse(); foreach (var entity in list) { var item = new GetApprovalResponse.Types.ApprovalResponse { ValidatorId = entity.ValidatorId, TransferSigningRequestId = entity.TransferSigningRequestId, ResolutionDocumentEncBase64 = entity.ResolutionDocumentEncBase64, Signature = entity.ResolutionSignature }; resp.Payload.Add(item); _logger.LogInformation("GetApprovalResults response. TransferSigningRequestId={TransferSigningRequestId}; VaultId={VaultId}; ValidatorId={ValidatorId}", item.TransferSigningRequestId, vaultId, item.ValidatorId); } return(Task.FromResult(resp)); }
public override async Task <CreateApprovalRequestResponse> CreateApprovalRequest(CreateApprovalRequestRequest request, ServerCallContext context) { var tenantId = request.TenantId; var vaultId = context.GetVaultId(); foreach (var validatorRequest in request.ValidatorRequests) { var entity = ApprovalRequestMyNoSqlEntity.Generate(validatorRequest.ValidatorId, request.TransferSigningRequestId); entity.TenantId = tenantId; entity.MessageEnc = validatorRequest.TransactionDetailsEncBase64; entity.SecretEnc = validatorRequest.SecretEncBase64; entity.IvNonce = validatorRequest.IvNonce; entity.IsOpen = true; entity.VaultId = vaultId; await _dataWriter.InsertOrReplaceAsync(entity); await _pushNotificator.SendPushNotifications(entity); _logger.LogInformation("CreateApprovalRequest processed. TransferSigningRequestId={TransferSigningRequestId}; TenantId={TenantId}; VaultId={VaultId}; ValidatorId={ValidatorId}", request.TransferSigningRequestId, tenantId, vaultId, validatorRequest.ValidatorId); } //await _dataWriter.BulkInsertOrReplaceAsync(list, DataSynchronizationPeriod.Immediately); var resp = new CreateApprovalRequestResponse(); return(resp); }
public override async Task <AcknowledgeResultResponse> AcknowledgeResult(AcknowledgeResultRequest request, ServerCallContext context) { var vaultId = context.GetVaultId(); var item = _dataReader.Get(ApprovalRequestMyNoSqlEntity.GeneratePartitionKey(request.ValidatorId), ApprovalRequestMyNoSqlEntity.GenerateRowKey(request.TransferSigningRequestId)); if (item != null && item.VaultId == vaultId) { await _dataWriter.DeleteAsync(ApprovalRequestMyNoSqlEntity.GeneratePartitionKey(request.ValidatorId), ApprovalRequestMyNoSqlEntity.GenerateRowKey(request.TransferSigningRequestId)); _logger.LogInformation("Acknowledge ApprovalResults. TransferSigningRequestId={TransferSigningRequestId}; TenantId={TenantId}; VaultId={VaultId}; ValidatorId={ValidatorId}", item.TransferSigningRequestId, item.TenantId, item.VaultId, item.ValidatorId); } return(new AcknowledgeResultResponse()); }
public override async Task <GetTransferSigningRequestsResponse> Get(GetTransferSigningRequestsRequest request, ServerCallContext context) { var vaultType = context.GetVaultType(); if (!vaultType.HasValue) { return(GetErrorResponse(GetTransferSigningRequestsErrorResponseBody.Types.ErrorCode.InvalidParameters, "Vault type required")); } var vaultId = context.GetVaultId(); if (!vaultId.HasValue && vaultType == VaultType.Private) { return(GetErrorResponse(GetTransferSigningRequestsErrorResponseBody.Types.ErrorCode.InvalidParameters, "Private vault id required")); } var pendingTransactionSigningRequests = vaultType == VaultType.Shared ? await _transferSigningRequestsRepository.GetPendingForSharedVaultAsync() : await _transferSigningRequestsRepository.GetPendingForPrivateVaultAsync(vaultId.Value); var response = new GetTransferSigningRequestsResponseBody(); foreach (var transactionSigningRequest in pendingTransactionSigningRequests) { var item = new TransferSigningRequest { Id = transactionSigningRequest.Id, BlockchainId = transactionSigningRequest.Blockchain.Id, NetworkType = transactionSigningRequest.Blockchain.NetworkType switch { Swisschain.Sirius.Sdk.Primitives.NetworkType.Private => Swisschain.Sirius.VaultApi.ApiContract.Common.NetworkType.Private, Swisschain.Sirius.Sdk.Primitives.NetworkType.Public => Swisschain.Sirius.VaultApi.ApiContract.Common.NetworkType.Public, Swisschain.Sirius.Sdk.Primitives.NetworkType.Test => Swisschain.Sirius.VaultApi.ApiContract.Common.NetworkType.Test, _ => throw new InvalidEnumArgumentException( nameof(transactionSigningRequest.Blockchain.NetworkType), (int)transactionSigningRequest.Blockchain.NetworkType, typeof(Swisschain.Sirius.Sdk.Primitives.NetworkType)) },
public override async Task <GetWalletGenerationRequestResponse> Get(GetWalletGenerationRequestRequest request, ServerCallContext context) { var vaultType = context.GetVaultType(); if (!vaultType.HasValue) { return(GetErrorResponse(GetWalletGenerationRequestErrorResponseBody.Types.ErrorCode.InvalidParameters, "Vault type required")); } var vaultId = context.GetVaultId(); if (!vaultId.HasValue && vaultType == VaultType.Private) { return(GetErrorResponse(GetWalletGenerationRequestErrorResponseBody.Types.ErrorCode.InvalidParameters, "Private vault id required")); } var pendingWalletGenerationRequests = vaultType == VaultType.Shared ? await _walletGenerationRequestRepository.GetPendingForSharedVaultAsync() : await _walletGenerationRequestRepository.GetPendingForPrivateVaultAsync(vaultId.Value); var response = new GetWalletGenerationRequestResponseBody(); response.Requests.AddRange(pendingWalletGenerationRequests .Select(walletGenerationRequest => new WalletGenerationRequest { Id = walletGenerationRequest.Id, BlockchainId = walletGenerationRequest.BlockchainId, NetworkType = walletGenerationRequest.NetworkType switch { Swisschain.Sirius.Sdk.Primitives.NetworkType.Private => Swisschain.Sirius.VaultApi.ApiContract.Common.NetworkType.Private, Swisschain.Sirius.Sdk.Primitives.NetworkType.Public => Swisschain.Sirius.VaultApi.ApiContract.Common.NetworkType.Public, Swisschain.Sirius.Sdk.Primitives.NetworkType.Test => Swisschain.Sirius.VaultApi.ApiContract.Common.NetworkType.Test, _ => throw new InvalidEnumArgumentException(nameof(walletGenerationRequest.NetworkType), (int)walletGenerationRequest.NetworkType, typeof(Swisschain.Sirius.Sdk.Primitives.NetworkType)) },
public override async Task <GetTransferValidationRequestsResponse> Get( GetTransferValidationRequestsRequest request, ServerCallContext context) { var vaultType = context.GetVaultType(); if (!vaultType.HasValue) { return(GetErrorResponse( GetTransferValidationRequestsErrorResponseBody.Types.ErrorCode.InvalidParameters, "Vault type required")); } var vaultId = context.GetVaultId(); if (!vaultId.HasValue && vaultType == VaultType.Private) { return(GetErrorResponse( GetTransferValidationRequestsErrorResponseBody.Types.ErrorCode.InvalidParameters, "Private vault id required")); } IReadOnlyCollection <VaultApi.Common.ReadModels.TransferValidationRequests.TransferValidationRequest> requests; if (vaultType == VaultType.Shared) { requests = await _transferValidationRequestRepository.GetPendingForSharedVaultAsync(); } else { requests = await _transferValidationRequestRepository.GetPendingForPrivateVaultAsync(vaultId.Value); } var response = new GetTransferValidationRequestsResponse { Response = new GetTransferValidationRequestsResponseBody() }; if (requests.Any()) { response.Response.Requests.AddRange(requests.Select(x => new TransferValidationRequest { Id = x.Id, OperationId = x.TransferId, TenantId = x.TenantId, Blockchain = new Blockchain { Id = x.Blockchain.Id, NetworkType = x.Blockchain.NetworkType switch { Swisschain.Sirius.Sdk.Primitives.NetworkType.Private => Swisschain.Sirius.VaultApi.ApiContract.Common.NetworkType.Private, Swisschain.Sirius.Sdk.Primitives.NetworkType.Test => Swisschain.Sirius.VaultApi.ApiContract.Common.NetworkType.Test, Swisschain.Sirius.Sdk.Primitives.NetworkType.Public => Swisschain.Sirius.VaultApi.ApiContract.Common.NetworkType.Public, _ => throw new ArgumentOutOfRangeException(nameof(x.Blockchain.NetworkType), x.Blockchain.NetworkType, null) },