public async Task <OkObjectResult> GetMarks([FromQuery] long from, [FromQuery] long to, [FromQuery] string symbol, [FromQuery] string resolution) { var fromDate = TvDateTimeConverter.ConvertFromUnixSeconds(from); var toDate = TvDateTimeConverter.ConvertFromUnixSeconds(to); var response = await _provider.GetMarks(fromDate, toDate, symbol, resolution); var marks = response ?? new TvMark[0]; var timestamps = marks.Select(q => q.Timestamp.ToUnixSeconds()).ToArray(); var ids = marks.Select(q => q.Id).ToArray(); var labels = marks.Select(q => q.Label).ToArray(); var labelFonts = marks.Select(q => q.LabelFontColor).ToArray(); var colors = marks.Select(q => q.Color).ToArray(); var texts = marks.Select(q => q.Text).ToArray(); var sizes = marks.Select(q => q.MinSize).ToArray(); return(Ok(new { id = ids, time = timestamps, label = labels, labelFontColor = labelFonts, text = texts, color = colors, minSize = sizes, })); }
public async Task <OkObjectResult> GetHistory([FromQuery] long from, [FromQuery] long to, [FromQuery] string symbol, [FromQuery] string resolution) { var fromDate = TvDateTimeConverter.ConvertFromUnixSeconds(from); var toDate = TvDateTimeConverter.ConvertFromUnixSeconds(to); var response = await _provider.GetHistory(fromDate, toDate, symbol, resolution); var bars = response?.Bars; var nextTime = response?.NextTime?.ToUnixSeconds(); var nextTimeLong = (long?)nextTime; if (response?.Bars == null) { if (nextTimeLong != null) { return(Ok( new { status = "no_data", nextTime = nextTimeLong })); } return(Ok( new { status = "error", errmsg = "missing data" })); } var status = GetStatus(response); var timestamps = bars.Select(q => q.Timestamp.ToUnixSeconds()).ToArray(); var closing = bars.Select(q => q.Close).ToArray(); var opening = bars.Select(q => q.Open).ToArray(); var high = bars.Select(q => q.High).ToArray(); var low = bars.Select(q => q.Low).ToArray(); var volume = bars.Select(q => q.Volume).ToArray(); return(Ok(new { s = status, t = timestamps, c = closing, o = ArrayOrNull(opening), h = ArrayOrNull(high), l = ArrayOrNull(low), v = ArrayOrNull(volume), errmsg = response.ErrorMessage, nextTime = nextTimeLong })); }