Beispiel #1
0
        public Task <ResponseDeliverTx> RouteDeliverTx(RequestDeliverTx request, ServerCallContext context)
        {
            var resolved = ResolveTransactionHandler(() => request.Tx);

            return(Handle(resolved.Handler, resolved.Payload,
                          (handler, payload) => handler.DeliverTx(resolved.TransactionToken, payload, request, context)));
        }
        public Task <ResponseDeliverTx> RouteDeliverTx(RequestDeliverTx request, ServerCallContext context)
        {
            var data    = ResolveRequestTx(request.Tx);
            var handler = _transactionHandlerFactory.CreateHandlerFor(data.Payload);

            _logger.LogInformation($"Handling DeliverTx {data.Payload.GetType()} with handler {handler.GetType()}");
            return(handler.DeliverTx(data.TransactionToken, data.Payload, request, context));
        }
Beispiel #3
0
        public async Task <ResponseDeliverTx> DeliverTx(TransactionToken transactionToken, BaseTransaction data,
                                                        RequestDeliverTx request, ServerCallContext context)
        {
            if (!(data is T payload))
            {
                return(ResponseHelper.Deliver.NoPayload());
            }

            return(await DeliverTx(transactionToken, payload, request, context).ConfigureAwait(false));
        }
Beispiel #4
0
        public override Task <ResponseDeliverTx> DeliverTx(RequestDeliverTx request, ServerCallContext context)
        {
            var tx   = request.Tx;
            var data = tx.ToBase64();

            Logger.Debug("DeliverTx: ${data}");

            if (tx.Length == 0)
            {
                return(Task.FromResult(new ResponseDeliverTx
                {
                    Code = CodeType.BadNonce,
                    Log = "Tansaction is emptyr"
                }));
            }
            else if (tx.Length <= 4)
            {
                int x = Int32.Parse(tx.ToString());

                if (x != txCount)
                {
                    return(Task.FromResult(new ResponseDeliverTx
                    {
                        Code = CodeType.BadNonce,
                        Log = "Invalid nonce"
                    }));
                }
            }
            else
            {
                return(Task.FromResult(new ResponseDeliverTx
                {
                    Code = CodeType.BadNonce,
                    Log = "Got a bad value"
                }));
            }

            txCount += 1;

            Logger.Debug("DeliverTx - txCount increment: ${txCount}");

            return(Task.FromResult(new ResponseDeliverTx
            {
                Code = CodeType.Ok
            }));
        }
Beispiel #5
0
        public virtual Task <ResponseDeliverTx> ReceivedDeliverTx(RequestDeliverTx req)
        {
            var tx   = req.Tx;
            var data = tx.ToBase64();

            Console.WriteLine("DeliverTx: ${data}");

            if (tx.Length == 0)
            {
                return(Task.FromResult(new ResponseDeliverTx
                {
                    Code = CodeType.BadNonce,
                    Log = "Tansaction is emptyr"
                }));
            }
            else if (tx.Length <= 4)
            {
                int x = Int32.Parse(tx.ToString());

                if (x != txCount)
                {
                    return(Task.FromResult(new ResponseDeliverTx
                    {
                        Code = CodeType.BadNonce,
                        Log = "Invalid nonce"
                    }));
                }
            }
            else
            {
                return(Task.FromResult(new ResponseDeliverTx
                {
                    Code = CodeType.BadNonce,
                    Log = "Got a bad value"
                }));
            }

            txCount += 1;

            Console.WriteLine("DeliverTx - txCount increment: ${txCount}");

            return(Task.FromResult(new ResponseDeliverTx
            {
                Code = CodeType.Ok
            }));
        }
Beispiel #6
0
 protected abstract Task <ResponseDeliverTx> DeliverTx(TransactionToken transactionToken, T payload,
                                                       RequestDeliverTx request, ServerCallContext context);
        public async Task <ResponseDeliverTx> DeliverTx(TransactionToken transactionToken, object data, RequestDeliverTx request, ServerCallContext context)
        {
            if (!(data is DenyTransferRequest payload))
            {
                return(ResponseHelper.Deliver.NoPayload());
            }

            var callNumber = await _callNumberRepository.Get(payload.PhoneNumber);

            if (callNumber == null)
            {
                return(ResponseHelper.Deliver.Create(CodeType.UnknownCallNumber, "Unknown call number."));
            }

            if (!IsVerifiedCaller(transactionToken, callNumber.Owner))
            {
                return(ResponseHelper.Deliver.Unauthorized());
            }

            callNumber.TransferRequestedTo    = null;
            callNumber.TransferRequestStarted = null;

            await _callNumberRepository.Update(callNumber);

            return(ResponseHelper.Deliver.Ok());
        }
Beispiel #8
0
        public async Task <ResponseDeliverTx> DeliverTx(TransactionToken transactionToken, object data, RequestDeliverTx request, ServerCallContext context)
        {
            if (!(data is RequestTransfer payload))
            {
                return(ResponseHelper.Deliver.NoPayload());
            }

            if (!IsVerifiedCaller(transactionToken, payload.NewOwner))
            {
                return(ResponseHelper.Deliver.Unauthorized());
            }

            _logger.LogInformation("Received valid CheckTx request");

            var callNumber = await _callNumberRepository.Get(payload.PhoneNumber);

            callNumber.TransferRequestStarted = payload.TransferStarted;
            callNumber.TransferRequestedTo    = payload.NewOwner;

            await _callNumberRepository.Update(callNumber);

            _logger.LogInformation($"DeliverTx Result: ok, transfer started: {callNumber.TransferRequestStarted}, to: {callNumber.TransferRequestedTo}");
            return(ResponseHelper.Deliver.Ok());
        }
 public override Task <ResponseDeliverTx> DeliverTx(RequestDeliverTx request, ServerCallContext context)
 {
     Console.WriteLine("DeliverTx has been called.");
     return(_transactionHandlerRouter.RouteDeliverTx(request, context));
 }
Beispiel #10
0
 public override ResponseDeliverTx DeliverTx(RequestDeliverTx request, CallOptions options)
 {
     return(base.DeliverTx(request, options));
 }
Beispiel #11
0
 public override ResponseDeliverTx DeliverTx(RequestDeliverTx request, Metadata headers = null, DateTime?deadline = null, CancellationToken cancellationToken = default(CancellationToken))
 {
     return(base.DeliverTx(request, headers, deadline, cancellationToken));
 }
        public async Task <ResponseDeliverTx> DeliverTx(TransactionToken transactionToken, object data, RequestDeliverTx request, ServerCallContext context)
        {
            if (!IsVerifiedCaller(transactionToken))
            {
                return(ResponseHelper.Deliver.Unauthorized());
            }

            if (!(data is CreateNumber payload))
            {
                return(ResponseHelper.Deliver.NoPayload());
            }

            _logger.LogInformation("Received valid DeliverTx request");

            await _callNumberRepository.Add(new CallNumber()
            {
                Owner       = payload.Owner,
                PhoneNumber = payload.PhoneNumber
            });

            _logger.LogInformation("DeliverTx Result: ok");
            return(ResponseHelper.Deliver.Ok());
        }