public override Task <CashInOutOperationResponse> CashInOut(CashInOutOperation request,
                                                                    ServerCallContext context)
        {
            var isWithdrawal = double.Parse(request.Volume) < 0;

            using var activity = MyTelemetry.StartActivity(isWithdrawal ? "Withdrawal" : "Deposit");

            activity?.AddTag("operationId", request.Id)
            .AddTag("brokerId", request.BrokerId)
            .AddTag("accountId", request.AccountId)
            .AddTag("walletId", request.WalletId)
            .AddTag("assetId", request.AssetId)
            .AddTag("volume", request.Volume);

            if (isWithdrawal && request.Fees.Count == 0)
            {
                var fees = _assetFeesClient.GetAssetFees(request.BrokerId, request.AssetId,
                                                         OperationType.Withdrawal);
                if (fees != null)
                {
                    request.Fees.Add(FeesConverter.ConvertAssetFee(fees));
                }
            }

            return(_cashServiceClient.CashInOutAsync(request, cancellationToken: context.CancellationToken)
                   .ResponseAsync);
        }
Example #2
0
        private void AddLimitOrderFees(LimitOrder request)
        {
            var fees = _spotInstrumentFeesClient.GetSpotInstrumentFees(request.BrokerId, request.AssetPairId);

            if (fees != null)
            {
                request.Fees.Add(FeesConverter.ConvertLimitOrderFee(fees));
            }
        }
Example #3
0
        private void AddMultiLimitOrderFees(MultiLimitOrder request)
        {
            var fees = _spotInstrumentFeesClient.GetSpotInstrumentFees(request.BrokerId, request.AssetPairId);

            if (fees != null)
            {
                foreach (var requestOrder in request.Orders)
                {
                    requestOrder.Fees.Add(FeesConverter.ConvertLimitOrderFee(fees));
                }
            }
        }