Paginierung
Eine Seite, alle Seiten oder ein Eintrag nach dem anderen.
Eine Seite
var page = await client.Threads.ListAsync(folder: "inbox", limit: 25); foreach (var thread in page){ Console.WriteLine(thread["id"]);} if (page.HasMore){ var next = await client.Threads.ListAsync(folder: "inbox", limit: 25, cursor: page.NextCursor); Console.WriteLine(next.Count);}Eine ListAsync-Methode gibt eine Page mit Items, HasMore und NextCursor zurück, und foreach durchläuft ihre Einträge. Geben Sie NextCursor als cursor: mit denselben Filtern zurück, um die nächste Seite zu lesen.
Alle Seiten
var failed = await client.Emails.ListAllAsync(status: new[] { "failed" }); Console.WriteLine($"{failed.Count} messages failed");Eine ListAllAsync-Methode folgt dem Cursor bis zum Ende und gibt alle Einträge in einer Liste zurück. Ein Fehler auf einer Seite lässt den gesamten Aufruf scheitern.
Ein Eintrag nach dem anderen
await foreach (var contact in client.Contacts.IterateAsync(limit: 100)){ if ((string?)contact["email"] == "[email protected]") { break; }} await foreach (var entry in client.Emails.IterateEventsAsync("msg_3f9a1c07d2b84e6a9c5b1f20")){ Console.WriteLine(entry["type"]);}Eine IterateAsync-Methode gibt ein IAsyncEnumerable<JsonObject> zurück, das die nächste Seite erst anfordert, wenn die Schleife sie erreicht, sodass ein break die Anfragen beendet. Jede Liste, die blättert, hat alle drei, benannt nach der Liste, die sie durchlaufen: ListAllEventsAsync und IterateEventsAsync neben ListEventsAsync.
Ein Durchlauf hält an, wenn die API einen Cursor wiederholt, dem er schon gefolgt ist, sodass er nie endlos kreisen kann.