Sayfalama
Tek sayfa, tüm sayfalar ya da her seferinde tek öğe.
Tek sayfa
page, err := client.Threads.List(ctx, openemail.WithFolder("inbox"), openemail.WithLimit(25))if err != nil { return err} for _, thread := range page.Items { fmt.Println(thread.ID())} if page.HasMore { next, err := client.Threads.List(ctx, openemail.WithFolder("inbox"), openemail.WithCursor(page.NextCursor)) if err != nil { return err } fmt.Println(len(next.Items))}Bir List yöntemi Items, HasMore ve NextCursor içeren bir *openemail.Page döndürür. Sonraki sayfayı okumak için NextCursor değerini aynı filtrelerle birlikte openemail.WithCursor ile geri geçirin.
Tüm sayfalar
failed, err := client.Emails.ListAll(ctx, openemail.WithStatus("failed"))if err != nil { return err} fmt.Println(len(failed), "messages failed")Bir ListAll yöntemi imleci sonuna kadar izler ve tüm öğeleri tek bir slice içinde döndürür. Herhangi bir sayfadaki başarısızlık tüm çağrıyı başarısız kılar.
Her seferinde bir öğe
for contact, err := range client.Contacts.Iterate(ctx, openemail.WithLimit(100)).All() { if err != nil { return err } if contact.String("email") == "[email protected]" { break }} events := client.Emails.IterateEvents(ctx, "msg_3f9a1c07d2b84e6a9c5b1f20") for events.Next() { fmt.Println(events.Item().String("type"))} return events.Err()Bir Iterate yöntemi bir *openemail.Iterator döndürür; bu, sonraki sayfayı yalnızca döngü oraya ulaştığında ister, bu yüzden bir break istekleri durdurur. All() üzerinde range ile dolaşın ya da düz bir döngüde Next, Item ve Err çağırın.
Bir yineleyici, API daha önce izlediği bir imleci yinelediğinde durur; böylece bir dolaşma asla sonsuza dek dönemez.