Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Page Iterator support #479

Merged
merged 76 commits into from
Mar 21, 2024
Merged

Add Page Iterator support #479

merged 76 commits into from
Mar 21, 2024

Conversation

shemogumbe
Copy link
Contributor

@shemogumbe shemogumbe commented Feb 5, 2024

Page Iterator For Python

- Define a callback function

def callback(items):
            for i in items:
                print(dir(i))
                print("--------------------------")

- Instantiate page iterator

page_iterator = PageIterator(paginated_response, client.request_adapter)

       page_iterator = PageIterator(messages, client.request_adapter)
       

Page Iterator functions and fields

      page_iterator = PageIterator(messages, client.request_adapter)
        print(
            f"Current page odata next link - {page_iterator.next_link}"
        )  # https://graph.microsoft.com/v1.0/users/7dbd310d-1148-44ff-8e68-1207f287c752/messages?%24top=10&%24skip=10

        print(
            f"Current page value - {type(page_iterator.current_page.value)}"
        )  #  an iterable list of model objects - remove type to see actual list or loop through it
        for message in page_iterator.current_page.value:
            print(f"Message - {message.subject}")

        # print(messages)

        print(f"Has next - {page_iterator.has_next}")
        print(f"Headers - {page_iterator.headers}")
        print(f"Request Options - {page_iterator.request_options}")
        print(f"Page Iterator Pause Index - {page_iterator.pause_index}")

        next_page = await page_iterator.next()  # uses fetch next page method
        # Next page - value and next link
        print(f"Next page Value  -{type(next_page.value)}")  #  an iterable list of model objects
        # does the next page have a next link
        print(
            f"Next page next link - {next_page.odata_next_link}"
        )  # https://graph.microsoft.com/v1.0/users/7dbd310d-1148-44ff-8e68-1207f287c752/messages?%24top=10&%24skip=20

        print("===============Iterating=================")
        page_iterator.iterate(callback(messages.value))  # uses enumerate method

@shemogumbe shemogumbe changed the title Shem/add page iterator Add Page Iterator support Feb 5, 2024
@shemogumbe shemogumbe force-pushed the shem/add-page-iterator branch from b14ec81 to 0b8c58e Compare March 5, 2024 13:18
@shemogumbe shemogumbe requested a review from samwelkanda March 14, 2024 13:32
src/msgraph_core/base_graph_request_adapter.py Outdated Show resolved Hide resolved
src/msgraph_core/models/page_result.py Outdated Show resolved Hide resolved
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Page Iterator support
3 participants