Description
Feature Request
PageIterator should expose an option to include headers each time it makes a nextLink request. Currently using PageIterator with calendar list requests when you also use the Prefer: outlook.timezone="" header causes a problem. The results in the first page (that you make yourself and include the header), return dateTime values in the requested time zones. Results in subsequent pages do not.
Describe the solution you'd like
Add this to PageIterator. One suggestion would be:
await pageIterator.iterate().withHeaders({
"Prefer": "outlook.timezone="Pacific Standard Time""
});
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Repro code:
const startOfWeek = '2020-08-02T07:00:00';
const endOfWeek = '2020-08-09T07:00:00';
let response = await graphClient
.api('/me/calendarview')
// Set the Prefer=outlook.timezone header so date/times are in
// user's preferred time zone
.header("Prefer", outlook.timezone="Pacific Standard Time"
)
// Add the startDateTime and endDateTime query parameters
.query({ startDateTime: startOfWeek, endDateTime: endOfWeek })
// Select just the fields we are interested in
.select('subject,organizer,start,end')
// Sort the results by start, earliest first
.orderby('start/dateTime')
// Maximum 50 events in response
.top(5)
.get();
// If there are more results, use a PageIterator to get them all
if (response['@odata.nextLink']) {
console.log('Need to iterate');
let events = [];
const pageIterator = new MicrosoftGraph.PageIterator(
graphClient, response, (event) => {
events.push(event);
return true;
}
);
await pageIterator.iterate();
console.log(JSON.stringify(events));
} else {
console.log(JSON.stringify(response.value));
}
You'll note that the first 5 events have the times correct in Pacific, but the rest are in UTC.
AB#5628