public IObservable <IProjectsSummary> GetByWorkspace(long workspaceId, DateTimeOffset startDate, DateTimeOffset?endDate) { var interval = endDate - startDate; if (interval.HasValue && interval > TimeSpan.FromDays(365)) { throw new ArgumentOutOfRangeException(nameof(endDate)); } var parameters = new ProjectsSummaryParameters(startDate, endDate); var json = serializer.Serialize(parameters, SerializationReason.Post, null); return(Observable.Create <IProjectsSummary>(async observer => { var projectsSummaries = await CreateListObservable <ProjectSummary, IProjectSummary>(endPoints.Summary(workspaceId), credentials.Header, json); var summary = new ProjectsSummary { StartDate = startDate, EndDate = endDate, ProjectsSummaries = projectsSummaries }; observer.OnNext(summary); observer.OnCompleted(); return () => { }; })); }
public async Task <IProjectsSummary> GetByWorkspace(long workspaceId, DateTimeOffset startDate, DateTimeOffset?endDate) { var interval = endDate - startDate; if (interval.HasValue && interval > TimeSpan.FromDays(365)) { throw new ArgumentOutOfRangeException(nameof(endDate)); } var parameters = new ProjectsSummaryParameters(startDate, endDate); var json = serializer.Serialize(parameters, SerializationReason.Post); var endPoint = endPoints.Summary(workspaceId); var projectSummaries = await SendRequest <ProjectSummary, IProjectSummary>(endPoint, credentials.Header, json) .ConfigureAwait(false); return(new ProjectsSummary { StartDate = startDate, EndDate = endDate, ProjectsSummaries = projectSummaries }); }