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); }
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); }
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); }
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); }
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"); } }
public abstract string GetUrlFrom(ISymbol symbol, CandleTimespan timespan);