microsoftgraph / microsoftgraph/msgraph-sdk-python

A Way to get all list values for a CollectionResponse?

Aperta
#919 3 commenti 0 reazioni 1 assegnatario Vedi su GitHub

@jussihi ci sta già lavorando.

Dal 8/10/2024.

Needs: Attention :wave: question
Lingua principale
Python
Stelle
630
Fork
96
Merge medio
15h 20m
PR unite (30g)
3

Descrizione

Is your feature request related to a problem? Please describe the problem.

Is there already a way to get all items for a CollectionResponse? Currently the API/SDK returns only a page of results, and then we need to fetch more by using odata_next_link.

Is there a way to get all results in a single request?

I have made a helper function which I use, is this the best way;

# Takes in any CollectionResponse
async def get_complete_paginated_list(
    request_builder_func: Any,
    request_configuration: Optional[Any] = None
) -> List[Any]:
    ret: List[Any] = []
    collection_response: Any = await request_builder_func.get()

    # Nothing to return here
    if collection_response is None or collection_response.value is None:
        return ret

    def add_response_items(response: Optional[Any], items: List[Any]) -> None:
        if response is not None and response.value is not None:
            for item in response.value:
                items.append(item)

    # Add initial results
    add_response_items(collection_response, ret)

    # Iterate pages
    while collection_response is not None and collection_response.odata_next_link is not None:
        collection_response: Optional[Any] = await request_builder_func.with_url(collection_response.odata_next_link).get(request_configuration = request_configuration)
        if collection_response is not None:
            add_response_items(collection_response, ret)

    return ret

It can then be used like this;
mailfolders: List[MailFolder] = await get_complete_paginated_list(graph_client.users.by_user_id(user_id).mail_folders)

Describe the solution you'd like.

something like what I've made

Additional context?

No response

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.