internal Series(Fred fred) : base(fred)
{
_categories = new Lazy <Task <IEnumerable <Category> > >(async() => UseRealtimeFields
? await Fred.GetSeriesCategoriesAsync(Id, RealtimeStart, RealtimeEnd)
: await Fred.GetSeriesCategoriesAsync(Id));
_release = new Lazy <Task <Release> >(async() => UseRealtimeFields
? await Fred.GetSeriesReleaseAsync(Id, RealtimeStart, RealtimeEnd)
: await Fred.GetSeriesReleaseAsync(Id));
_data = new Lazy <Task <List <Observation> > >(
async() =>
{
const int limit = 100000;
var data = UseRealtimeFields
? (List <Observation>)
await Fred.GetSeriesObservationsAsync(Id, ObservationStart, ObservationEnd, RealtimeStart,
RealtimeEnd, Enumerable.Empty <DateTime>())
: (List <Observation>)
await Fred.GetSeriesObservationsAsync(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>)
await Fred.GetSeriesObservationsAsync(Id, ObservationStart, ObservationEnd, start,
end, Enumerable.Empty <DateTime>(), limit,
call * limit);
data.AddRange(more);
count = more.Count;
call++;
}
return(data);
});
}