Exemple #1
0
        private string SetDelimeter(string name, AdapterTypeItemEnum adapter)
        {
            string nameDelimeted = name;

            switch (adapter)
            {
            case (AdapterTypeItemEnum.MSSQL):
                nameDelimeted = $"[{name}]";
                break;

            case (AdapterTypeItemEnum.MySQL):
                nameDelimeted = $"`{name}`";
                break;

            case (AdapterTypeItemEnum.Oracle):
                nameDelimeted = $"\"{name}\"";
                break;

            case (AdapterTypeItemEnum.MongoDB):
                //check for reserved words in MongoDB
                break;
            }

            return(nameDelimeted);
        }
        public async Task <Response <int> > GetCurrentBlockNumber(long adapterId, AdapterTypeItemEnum adapterType)
        {
            var response = new Response <int>();

            try
            {
                var cryptoAdapter = _entities.Adapter.Find(adapterId).CryptoAdapter.FirstOrDefault();

                var cryptoAdapterModel = new CryptoAdapterModel
                {
                    RpcAddr = cryptoAdapter.RpcAddr
                };

                if (cryptoAdapter.RpcPort != null)
                {
                    cryptoAdapterModel.RpcPort = UInt16.Parse(cryptoAdapter.RpcPort);
                }

                switch (adapterType)
                {
                case AdapterTypeItemEnum.Ethereum:

                    var ethAdapter = new EthereumAdapter(_logger);

                    response = await ethAdapter.GetCurrentBlockNumber(cryptoAdapterModel);

                    break;

                case AdapterTypeItemEnum.Bitcoin:

                    var btcUsername = cryptoAdapter.CryptoAdapterProperty.FirstOrDefault(cap => cap.PropertyId == (long)PropertyEnum.RpcUsername).Value;
                    var btcPassword = cryptoAdapter.CryptoAdapterProperty.FirstOrDefault(cap => cap.PropertyId == (long)PropertyEnum.RpcPassword).Value;

                    var btcAdapter = new BitcoinAdapter(_logger);

                    response = btcAdapter.GetCurrentBlockNumber(cryptoAdapterModel, btcUsername, btcPassword);

                    break;

                case AdapterTypeItemEnum.NEO:

                    var neoAdapter = new NEOAdapter(_logger);

                    response = await neoAdapter.GetCurrentBlockNumber(cryptoAdapterModel);

                    break;

                case AdapterTypeItemEnum.Litecoin:

                    var ltcUsername = cryptoAdapter.CryptoAdapterProperty.FirstOrDefault(cap => cap.PropertyId == (long)PropertyEnum.RpcUsername).Value;
                    var ltcPassword = cryptoAdapter.CryptoAdapterProperty.FirstOrDefault(cap => cap.PropertyId == (long)PropertyEnum.RpcPassword).Value;

                    var ltcAdapter = new LitecoinAdapter(_logger);

                    response = ltcAdapter.GetCurrentBlockNumber(cryptoAdapterModel, ltcUsername, ltcPassword);

                    break;

                default:
                    break;
                }
            }
            catch (Exception ex)
            {
                response.Status  = StatusEnum.Error;
                response.Message = Message.SomethingWentWrong;
                _logger.Information($"BlockchainService.GetCurrentBlockNumber(adapterId: {adapterId}, adapterType: {adapterType}");
                _logger.Error(ex.Message);
            }

            return(response);
        }