internal Series(Fred fred) : base(fred)
{
_categories = new Lazy <IEnumerable <Category> >(() => UseRealtimeFields
? Fred.GetSeriesCategories(Id, RealtimeStart, RealtimeEnd)
: Fred.GetSeriesCategories(Id));
_release = new Lazy <Release>(() => UseRealtimeFields
? Fred.GetSeriesRelease(Id, RealtimeStart, RealtimeEnd)
: Fred.GetSeriesRelease(Id));
_data = new Lazy <List <Observation> >(
() =>
{
const int limit = 100000;
var data = UseRealtimeFields
? (List <Observation>)
Fred.GetSeriesObservations(Id, ObservationStart, ObservationEnd, RealtimeStart,
RealtimeEnd, Enumerable.Empty <DateTime>())
: (List <Observation>)
Fred.GetSeriesObservations(Id, ObservationStart, ObservationEnd);
var count = data.Count;
var call = 1;
while (count == limit)
{
var start = UseRealtimeFields ? RealtimeStart : Fred.CstTime();
var end = UseRealtimeFields ? RealtimeEnd : Fred.CstTime();
var more =
(List <Observation>)
Fred.GetSeriesObservations(Id, ObservationStart, ObservationEnd, start,
end, Enumerable.Empty <DateTime>(), limit,
call * limit);
data.AddRange(more);
count = more.Count;
call++;
}
return(data);
});
}