Пример #1
0
        public void The_Bitfinex_URL_Should_Be(string symbolName, CandleTimespan timespan, string expected)
        {
            var actual = new BitfinexDataReader().GetUrlFrom(new Symbol()
            {
                Name = symbolName
            }, timespan);

            Assert.Equal(expected, actual);
        }
Пример #2
0
        private IDictionary <string, string> GetParameters(ISymbol symbol, CandleTimespan timespan)
        {
            var dictionary = new Dictionary <string, string>();

            dictionary.Add(symbolKey, symbol.Name);
            dictionary.Add(timespanKey, GetTimespanValueFrom(timespan));

            return(dictionary);
        }
Пример #3
0
        public override string GetUrlFrom(ISymbol symbol, CandleTimespan timespan)
        {
            var url = TemplateURL;

            foreach (var item in GetParameters(symbol, timespan))
            {
                url = url.Replace(item.Key, item.Value);
            }

            return(url);
        }
Пример #4
0
        public virtual ICandle Read(ISymbol symbol, CandleTimespan timespan)
        {
            ICandle candle = null;
            var     url    = GetUrlFrom(symbol, timespan);

            var request = (HttpWebRequest)WebRequest.Create(url);

            request.AutomaticDecompression = DecompressionMethods.GZip;

            using (var response = (HttpWebResponse)request.GetResponse())
            {
                using (var stream = response.GetResponseStream())
                {
                    using (var reader = new StreamReader(stream))
                    {
                        candle = GetCandleFrom(reader.ReadToEnd());
                    }
                }
            }

            return(candle);
        }
Пример #5
0
        private string GetTimespanValueFrom(CandleTimespan timespan)
        {
            switch (timespan)
            {
            case CandleTimespan.OneMinute:
                return("1m");

            case CandleTimespan.FiveMinutes:
                return("5m");

            case CandleTimespan.FifteenMinutes:
                return("15m");

            case CandleTimespan.ThirtyMinutes:
                return("30m");

            case CandleTimespan.OneHour:
                return("1h");

            default:
                throw new InvalidCastException("Timespan not recognized");
            }
        }
Пример #6
0
 public abstract string GetUrlFrom(ISymbol symbol, CandleTimespan timespan);