Exemplo n.º 1
0
        /// <summary>
        /// Enables the API.
        /// </summary>
        public void Enable()
        {
            if (this.apiSchema == ApiSchema.Pro && this.ApiData.ApiKey == string.Empty)
            {
                throw new Exception("API Key missing!");
            }

            if (this.apiSchema == ApiSchema.Pro)
            {
                this.client = new CoinMarketCapClient(this.apiSchema, this.ApiData.ApiKey);
            }
            else
            {
                string apiKey = "29bc6cc3-7219-42f6-af87-f0147e9ee089";
                this.client = new CoinMarketCapClient(this.apiSchema, apiKey);
            }

            if (this.assetUpdateWorker.IsAlive)
            {
                throw new Exception("Already running!");
            }

            this.assetUpdateWorker = new Thread(this.AssetUpdateWorker);
            this.assetUpdateWorker.Start();
        }
Exemplo n.º 2
0
        public async static Task <CoinDetails> GetCoinTicker(string id)
        {
            CoinDetails Coin = null;

            var Client = CoinMarketCapClient.GetInstance();
            var Ticker = await Client.GetTickerAsync(id);

            Coin = new CoinDetails()
            {
                AvailableSupply = Ticker.AvailableSupply,
                Id                  = Ticker.Id,
                Name                = Ticker.Name,
                PercentChange1h     = Ticker.PercentChange1h,
                PercentChange24h    = Ticker.PercentChange24h,
                PercentChange7d     = Ticker.PercentChange7d,
                PriceBtc            = Ticker.PriceBtc,
                Rank                = Ticker.Rank,
                Symbol              = Ticker.Symbol,
                TotalSupply         = Ticker.TotalSupply,
                LastUpdatedUnixTime = Ticker.LastUpdatedUnixTime,
                LastUpdated         = Ticker.LastUpdated,
                MarketCapUsd        = Ticker.MarketCapUsd,
                MarketCapOther      = Ticker.MarketCapOther.ToEntity(),
                PriceOther          = Ticker.PriceOther.ToEntity(),
                PriceUsd            = Ticker.PriceUsd,
                Volume24hOther      = Ticker.Volume24hOther.ToEntity(),
                Volume24hUsd        = Ticker.Volume24hUsd
            };

            return(Coin);
        }
Exemplo n.º 3
0
        public async static Task <GetCoinMetadataResponse> GetCoinMetadata(string symbol, string id, string baseCoinSymbol = "BTC")
        {
            var Response = new GetCoinMetadataResponse();
            var List     = await GetCoinList();

            if (!List.ContainsKey(symbol))
            {
                var Client = CoinMarketCapClient.GetInstance();
                Response.Details = await GetCoinTicker(id);

                return(Response);
            }

            if (Exchanges == null)
            {
                Exchanges = await GetExchanges();
            }

            var CryptoId      = Int32.Parse(List[symbol].Id);
            var SnapshotTask  = GetCoinSnapshot(CryptoId);
            var TickerTask    = GetCoinTicker(id);
            var SocialTask    = GetSocialStats(CryptoId);
            var ChartDataTask = GetCandleData(symbol, baseCoinSymbol);

            await Task.WhenAll(SnapshotTask, TickerTask, ChartDataTask, SocialTask);

            var ExchangeList = Exchanges.Where(x => x.Value.ContainsKey(symbol)).Select(x => x.Key).ToList();

            Response.Metadata    = SnapshotTask.Result;
            Response.Details     = TickerTask.Result;
            Response.CandleData  = ChartDataTask.Result;
            Response.SocialStats = SocialTask.Result;
            Response.Exchanges   = ExchangeList;
            return(Response);
        }
Exemplo n.º 4
0
        public void Start()
        {
            _startDate = DateTime.UtcNow;

            _logger.LogInformation("Starting Telegram Bot");

            _telegramBotClient.OnMessage       += BotOnMessageReceived;
            _telegramBotClient.OnMessageEdited += BotOnMessageReceived;

            //_telegramBotClient.OnCallbackQuery += BotOnCallbackQueryReceived;
            //_telegramBotClient.OnInlineQuery += BotOnInlineQueryReceived;
            //_telegramBotClient.OnInlineResultChosen += BotOnChosenInlineResultReceived;
            //_telegramBotClient.OnReceiveError += BotOnReceiveError;

            var me = _telegramBotClient.GetMeAsync().Result;

            Console.Title = me.Username;

            _logger.LogInformation($"Telegram Bot testing connection => {me.Username}");

            _coinMarketCapClient = new CoinMarketCapClient();

            _telegramBotClient.StartReceiving();

            _started = true;

            _logger.LogInformation("Telegram Bot started");
        }
Exemplo n.º 5
0
        public async static Task <MarketInfo> GetGlobalStats()
        {
            var Client = CoinMarketCapClient.GetInstance();
            var Stats  = await Client.GetGlobalDataAsync();

            return(Stats.ToEntity());
        }
        public void GetTickerExpected()
        {
            var           httpClientMock = new Mock <IRestClient>();
            IDeserializer deserializer   = null;

            httpClientMock.Setup(x => x.AddHandler("application/json", It.IsAny <IDeserializer>())).Callback <string, IDeserializer>((c, d) => deserializer = d);
            httpClientMock.SetupAllProperties();

            httpClientMock.Setup(x => x.Execute <List <Ticker> >(It.IsAny <IRestRequest>())).Returns <IRestRequest>(request =>
            {
                var responseMock = new Mock <IRestResponse <List <Ticker> > >();
                responseMock.Setup(x => x.Content).Returns(Properties.Resources.CoinMarketCap_Sample);
                responseMock.Setup(x => x.Request).Returns(request);
                responseMock.Setup(x => x.ContentType).Returns("application/json");
                responseMock.Setup(x => x.Data).Returns(() => deserializer.Deserialize <List <Ticker> >(responseMock.Object));

                return(responseMock.Object);
            });

            var client = new CoinMarketCapClient(httpClientMock.Object, 3);

            var res = client.GetTicker();

            Assert.IsNotNull(res);

            res = client.GetTicker(FiatCurrency.EUR);

            Assert.IsNotNull(res);

            res = client.GetTicker(4, FiatCurrency.EUR);

            Assert.IsNotNull(res);
        }
Exemplo n.º 7
0
        /// <summary>
        /// Gets price change last 24 hour.
        /// </summary>
        /// <param name="currency">Cryptocurrency name</param>
        /// <returns></returns>
        public static async Task <string> CoinMarketCapPriceLastDay(string currency)
        {
            // Get instance
            var client = new CoinMarketCapClient();

            // Get price change last day.
            var ticker = await client.GetTickerAsync(currency);

            return(ticker.PercentChange24h.Value.ToString());
        }
Exemplo n.º 8
0
        /// <summary>
        /// Gets the price of the currency that you supply.
        /// </summary>
        /// <param name="currency">Cryptocurrency name</param>
        /// <returns></returns>
        public static async Task <string> CoinMarketCapPrice(string currency)
        {
            // Get instance
            var client = new CoinMarketCapClient();

            // Get current price.
            var ticker = await client.GetTickerAsync(currency);

            return(ticker.PriceUsd.Value.ToString());
        }
Exemplo n.º 9
0
        public CoinMarketCapClientTests()
        {
            this.httpClientFactoryMock = new Mock <IHttpClientFactory>();
            this.errorLoggerMock       = new Mock <IErrorLogger>();
            this.coinMarketCapClient   =
                new CoinMarketCapClient(
                    this.httpClientFactoryMock.Object,
                    this.errorLoggerMock.Object);

            this.errorLoggerMock.Setup(x => x.LogAsync(It.IsAny <string>())).Returns(Task.CompletedTask);

            this.errorLoggerMock.Setup(x => x.LogAsync(It.IsAny <string>(), It.IsAny <Exception>())).Returns(Task.CompletedTask);
        }
Exemplo n.º 10
0
        public async Task <JsonResult> ApiUpdatePriceForTicker(string listId)
        {
            try {
                CoinMarketCapClient _client = new CoinMarketCapClient();
                IDictionary <string, CyproPriceEntity> coinmaketresult = await _client.GetListPriceCyptoItemAsync(listId);

                foreach (CyproPriceEntity Item in coinmaketresult.Values)
                {
                    CyptoItemPriceViewModel objCyptoItemPrice = new CyptoItemPriceViewModel();
                    objCyptoItemPrice.id     = Item.id;
                    objCyptoItemPrice.name   = Item.name;
                    objCyptoItemPrice.symbol = Item.symbol;
                    objCyptoItemPrice.slug   = Item.slug;
                    objCyptoItemPrice.CyptoItemPriceUpdate = DateTime.Now;
                    objCyptoItemPrice.is_active            = true;
                    objCyptoItemPrice.cmc_rank             = Item.cmc_rank;
                    objCyptoItemPrice.num_market_pairs     = Item.num_market_pairs;
                    objCyptoItemPrice.circulating_supply   = Item.circulating_supply;
                    objCyptoItemPrice.total_supply         = Item.total_supply;
                    objCyptoItemPrice.max_supply           = Item.max_supply ?? 0;
                    try
                    {
                        objCyptoItemPrice.last_updated = DateTime.Parse(Item.last_updated);
                    }
                    catch
                    {
                        objCyptoItemPrice.last_updated = DateTime.Now;
                    }

                    PriceEntity USD = Item.quote.Values.First();
                    objCyptoItemPrice.USD_price             = USD.price;
                    objCyptoItemPrice.USD_volume_24h        = USD.volume_24h;
                    objCyptoItemPrice.USD_percent_change_1h = USD.percent_change_1h;
                    objCyptoItemPrice.USD_percent_change_7d = USD.percent_change_7d;
                    objCyptoItemPrice.USD_market_cap        = USD.market_cap;

                    CyptoItemPrice modelmain = objCyptoItemPrice._MainObj;

                    await cms_db.CreateCyptoItemPrice(objCyptoItemPrice._MainObj);
                }
                HttpContext.Application["LastTimePriceUpdate"] = DateTime.Now.ToString();
                return(Json(coinmaketresult, JsonRequestBehavior.AllowGet));
            }
            catch (Exception e)
            {
                cms_db.AddToExceptionLog("ApiUpdatePriceForTicker", "Member", e.ToString());
                return(Json(e, JsonRequestBehavior.AllowGet));
            }
        }
Exemplo n.º 11
0
        private Interpreter CreateInterpreter(string text)
        {
            var connectionStringFactory = new TestConnectionStringFactory();
            var currencyService         = new CurrencyService(connectionStringFactory);
            var lexer             = new Lexer(text, currencyService);
            var tokenQueueFactory = new TokenQueueFactory();
            var parser            = new Parser(lexer, tokenQueueFactory);

            var coinMarketCapClient          = new CoinMarketCapClient();
            var fixerClient                  = new FixerClient();
            var currencyConverter            = new CurrencyConverter(coinMarketCapClient, fixerClient);
            var currencyAmountTokenConverter = new TokenConverter(currencyConverter, currencyService, coinMarketCapClient, fixerClient);

            return(new Interpreter(parser, currencyAmountTokenConverter));
        }
Exemplo n.º 12
0
        /// <summary>
        ///     Adds coin sources to the <paramref name="services" />.
        /// </summary>
        /// <param name="services">The <see cref="IServiceCollection" />.</param>
        /// <param name="configurationRoot">Configuration</param>
        /// <returns></returns>
        public static IServiceCollection AddClients(this IServiceCollection services, IConfigurationRoot configurationRoot)
        {
#if NOT_DEPRECATED
            // currently returning errors
            CoinMarketCapClient.Register(services);
#endif
            BinanceClient.Register(services);
            BittrexClient.Register(services);
            GdaxClient.Register(services);
            GateIoClient.Register(services);
            KrakenClient.Register(services);
            PoloniexClient.Register(services);

            FunFairClientBase.Register(services: services,
                                       configurationRoot.GetSection(key: "Sources:FunFair")
                                       .Get <FunFairClientConfiguration>());

            return(services);
        }
Exemplo n.º 13
0
        static async Task <Dictionary <string, Dictionary <string, string> > > GetTickersAsync()
        {
            using (var response = await CoinMarketCapClient.GetAsync(Endpoint))
                using (var content = response.Content)
                {
                    var json = await content.ReadAsStringAsync();

                    var deserialized = JsonConvert
                                       .DeserializeObject <IEnumerable <Dictionary <string, string> > >(json);
                    return(KeywordKeys
                           .Select(key => deserialized
                                   .Select(coin => new KeyValuePair <string, Dictionary <string, string> >(
                                               coin.FirstOrDefault(x => x.Key == key).Value.ToLower(),
                                               coin)))
                           .SelectMany(x => x)
                           .GroupBy(x => x.Key)
                           .Select(x => x.FirstOrDefault())
                           .ToDictionary(x => x.Key, x => x.Value));
                }
        }
Exemplo n.º 14
0
        public async Task <IActionResult> Post(string cryptoName, [FromBody] StoreViewModel vm)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var newStore = Mapper.Map <Store>(vm);
                    var client   = new CoinMarketCapClient();
                    var result   = await client.GetTickerAsync();

                    //if (!result)
                    //{
                    //	_logger.LogError("Cant find it");
                    //}
                    //else
                    {
                        newStore.Price      = result.Data.LastUpdated;
                        newStore.supply     = result.Data.MaxSupply;
                        newStore.CryptoName = result.Data.Name;

                        _repositiry.AddStore(cryptoName, newStore, User.Identity.Name);

                        if (await _repositiry.SaveChangesAsync())
                        {
                            return(Created($"/api/Likes/{cryptoName}/Store/{newStore.CryptoName}",
                                           Mapper.Map <StoreViewModel>(newStore)));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.LogError("Failed to save new like: {0}", ex);
            }
            return(BadRequest("Failed"));
        }
 public ExchangeApiTests()
 {
     _coinMarketCapClient = new CoinMarketCapClient(new HttpClientHandler(), ApiEnvironment.Sandbox, "5bb4185b-ebb3-4cf7-942a-66a280f5db8b");
 }
 public void Initialize()
 {
     _client = new CoinMarketCapClient(Settings.Default.cmc_api_key);
 }
Exemplo n.º 17
0
 public ClientInstancedTests()
 {
     _client = new CoinMarketCapClient();
 }
 public CoinMarketCapTests()
 {
     _client = CoinMarketCapClient.GetInstance();
 }
Exemplo n.º 19
0
        public async static Task <List <CoinDetails> > GetTicker()
        {
            var Coins = new List <CoinDetails>();

            var Client     = CoinMarketCapClient.GetInstance();
            var TickerList = await Client.GetTickerListAsync(1000);

            TickerList.Reverse();
            try
            {
                var Tasks = new List <Task <KeyValuePair <long, decimal> > >();
                foreach (var Ticker in TickerList)
                {
                    int?daysOld = null;

                    double?Vol = 0;

                    try
                    {
                        Vol = Ticker.Volume24hUsd.GetValueOrDefault();
                    }
                    catch { }

                    try
                    {
                        daysOld = GetCoinAgeInDays(Ticker.Symbol, Ticker.Id);
                    }
                    catch (Exception ex)
                    {
                        var E = ex;
                        Debug.WriteLine(ex.Message);
                        if (ex.InnerException != null)
                        {
                            Debug.WriteLine(ex.InnerException.Message);
                        }
                    }

                    var Info = new CoinDetails()
                    {
                        AvailableSupply = Ticker.AvailableSupply.GetValueOrDefault(),
                        Id                  = Ticker.Id,
                        Name                = Ticker.Name,
                        PercentChange1h     = Ticker.PercentChange1h.GetValueOrDefault(),
                        PercentChange24h    = Ticker.PercentChange24h.GetValueOrDefault(),
                        PercentChange7d     = Ticker.PercentChange7d.GetValueOrDefault(),
                        PriceBtc            = Ticker.PriceBtc,
                        Rank                = Ticker.Rank,
                        Symbol              = Ticker.Symbol,
                        TotalSupply         = Ticker.TotalSupply.GetValueOrDefault(),
                        LastUpdatedUnixTime = Ticker.LastUpdatedUnixTime,
                        LastUpdated         = Ticker.LastUpdated,
                        MarketCapUsd        = Ticker.MarketCapUsd.GetValueOrDefault(),
                        MarketCapOther      = Ticker.MarketCapOther.ToEntity(),
                        PriceOther          = Ticker.PriceOther.ToEntity(),
                        PriceUsd            = Ticker.PriceUsd,
                        Volume24hOther      = Ticker.Volume24hOther.ToEntity(),
                        Volume24hUsd        = Vol,
                        DaysOld             = daysOld
                    };

                    Tasks.Add(GetATH(Ticker.Id));

                    Coins.Add(Info);
                }

                var Completed = await Task.WhenAll(Tasks);

                for (var i = 0; i < Completed.Length; i++)
                {
                    var ATH = Completed[i];

                    Coins[i].ATH     = (float)ATH.Value;
                    Coins[i].LastATH = FromUnixTime(ATH.Key);
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.ToString());
                if (ex.InnerException != null)
                {
                    Debug.WriteLine(ex.InnerException.Message);
                }
            }
            return(Coins);
        }
Exemplo n.º 20
0
        private static async Task Main()
        {
            var apikey = "";             // <-- Your API Key here
            //var apikey = System.IO.File.ReadAllLines($"{Environment.CurrentDirectory}\\ApiKey.txt")[0];

            var client = new CoinMarketCapClient(ApiSchema.Sandbox, apikey);

            var a = await client.GetCurrencyInfoAsync(new List <string> {
                "BTC", "ETH", "LTC"
            });

            $"Full names of BTC, ETH and LTC codes: {string.Join(", ", a.Data.Select(x => x.Value.Name))}".ToConsoleNotify();

            var b = await client.GetCurrencyInfoAsync(87);

            $"Name of currency with id #87: {b.Data.FirstOrDefault().Value.Name}".ToConsoleNotify();

            var c = await client.GetCurrencyMapAsync(new List <string> {
                "BTC", "ETH", "ETC", "ZEC"
            }, ParamListingStatus.Active, 1, 20);

            $"Slug of BTC, ETH, ETC and ZEC: {string.Join(", ", c.Data.Select(x=>x.Slug))}".ToConsoleNotify();

            //Not implemented by CoinMarketCap
            //var d = await client.GetCurrencyListingsHistoricalAsync("2018-08-01");
            //$"Coin with rank #9 on 01/08/2018: {d.Data.FirstOrDefault(x => x.CmcRank == 9)?.Name}".ToConsoleNotify();

            var e = await client.GetCurrencyListingsAsync();

            $"Coin with rank #9 now: {e.Data.FirstOrDefault(x => x.CmcRank == 9)?.Name}".ToConsoleNotify();

            var f = await client.GetCurrencyMarketPairsAsync(2, limit : 5000);

            $"Count of market pairs with coin {f.Data.Name}: {f.Data.NumMarketPairs}".ToConsoleNotify();

            var g = await client.GetCurrencyMarketOHLCVHistoricalAsync(1, time_start : "2018-08-01", time_end : "2018-08-09",
                                                                       convert : new List <string> {
                Fiat.EUR.ToString()
            });

            $"BTC highest price in EUR between 01/08/2018 and 09/08/2018: {g.Data.Quotes.Select(z => z.Quote).Select(x => x.GetValueOrDefault("EUR")).Max(x => x.High)}".ToConsoleNotify();

            var h = await client.GetCurrencyMarketQuotesHistoricalAsync(1, time_start : "2018-08-01", time_end : "2018-08-09");

            $"BTC highest daily volume in USD between 01/08/2018 and 09/08/2018: {h.Data.Quotes.Select(z => z.Quote).Select(x => x.GetValueOrDefault("USD")).Max(x => x.Volume24h)}".ToConsoleNotify();

            var j = await client.GetCurrencyMarketQuotesAsync(new List <int> {
                1
            });

            $"BTC average price in USD: {j.Data.Values.Select(z=>z.Quote).Select(x=>x.GetValueOrDefault("USD")).FirstOrDefault()?.Price}".ToConsoleNotify();

            var i = await client.GetExchangeInfoAsync(new List <string> {
                "bittrex"
            });

            $"Bittrex twitter: {i.Data.Values.FirstOrDefault()?.Urls.Twitter.FirstOrDefault()}".ToConsoleNotify();

            var k = await client.GetExchangeMapAsync();

            $"Exchange with id #24: {k.Data.FirstOrDefault(x=>x.Id==24)?.Name}".ToConsoleNotify();

            //"Not implemented by CoinMarketCap
            //var l = await client.GetExchangeListingsHistoriacalAsync("2018-08-01", market_type: MarketType.All, limit:1);
            //$"Top volume exchange on 01/08/2018: {l.}".ToConsoleNotify();

            var m = await client.GetExchangeListingsAsync(limit : 100, market_type : MarketType.All);

            $"Top volume exchange now: {m.Data.FirstOrDefault()?.Name}".ToConsoleNotify();

            var n = await client.GetExchangeMarketPairsAsync(m.Data.First().Id);

            $"Top pair of top market: {n.Data.MarketPairs.OrderByDescending(z=>z.Quote.Values.FirstOrDefault()?.Volume24hBase).FirstOrDefault()?.MarketPair}".ToConsoleNotify();

            var o = await client.ExchangeMarketQuotesHistoricalAsync(270, "2018-08-01", "2018-08-09", interval : ParamInterval.D1);

            $"Binance average daily volume on period between 01/08/2018 and 09/08/2018: {o.ExchangeMarketQuotesHistoricalData.Quotes.Average(z => z.Quote.Values.FirstOrDefault()?.Volume24h)}"
            .ToConsoleNotify();

            var p = await client.ExchangeMarketQuotesAsync(new List <int> {
                270
            });

            $"Binance volume now: {p.Data.FirstOrDefault().Value.Quote.FirstOrDefault().Value.Volume24h}".ToConsoleNotify();

            var q = await client.GlobalMetricsQuotesHistoricalAsync("2018-08-01", "2018-08-09");

            $"Average BTC dominance on perid between 01/08/2018 and 09/08/2018: {q.Data.Quotes.Average(x=>x.BtcDominance)}".ToConsoleNotify();

            var r = await client.GlobalMetricsQuotesAsync();

            $"BTC dominance now: {r.Data.BtcDominance}".ToConsoleNotify();

            var s = await client.ToolsPriceConversionAsync("ZEC", 1, convert : new List <string> {
                "BTC"
            });

            $"1.0 ZEC = {s.Data.Quote.FirstOrDefault().Value.Price} BTC".ToConsoleNotify();

            Console.ReadKey();
        }
Exemplo n.º 21
0
 public TickerTests()
 {
     _client = CoinMarketCapClient.Instance;
 }
Exemplo n.º 22
0
 public CoinMarketManagerController()
 {
     _client = CoinMarketCapClient.GetInstance();
     //  _client = new CoinMarketCapClient();
 }
Exemplo n.º 23
0
 public CoinMarketCapService(ICoinMarketCapRepository coinMarketCapRepository)
 {
     _coinMarketCapRepository = coinMarketCapRepository;
     _coinMarketCapClient     = new CoinMarketCapClient(new HttpClientHandler(), ApiEnvironment.Pro, "c572865c-d03a-4be2-8cba-84c963e48869");
 }
 public CoinMarketCapClientTest()
 {
     this.client = new CoinMarketCapClient();
 }
 public void Initialize()
 {
     _client = new CoinMarketCapClient("your-api-key");
 }
Exemplo n.º 26
0
        public void Setup()
        {
            var loggingMock = new Mock <ILogger <CoinMarketCapClient> >();

            Client = new CoinMarketCapClient(new HttpClient(), new ServiceConfig(), loggingMock.Object);
        }