Java
ترقيم الصفحات
صفحة واحدة، أو كل الصفحات، أو عنصر واحد في كل مرة.
صفحة واحدة
RequestOptions inbox = RequestOptions.of("folder", "inbox").limit(25);Page page = client.threads().list(inbox); for (Map<String, Object> thread : page) { System.out.println(thread.get("id") + " " + thread.get("subject"));} if (page.hasMore()) { Page next = client.threads().list(inbox.cursor(page.nextCursor())); System.out.println(next.size());}دالة list تعيد Page فيها items() وhasMore() وnextCursor()، وحلقة for تمر على عناصرها. مرّر nextCursor() من جديد بصفته cursor، مع عوامل التصفية نفسها، لقراءة الصفحة التالية.
كل الصفحات
List<Map<String, Object>> contacts = client.contacts().listAll(); System.out.println(contacts.size());دالة listAll تتبع المؤشر حتى النهاية وتعيد كل العناصر في List واحدة. وأي إخفاق في أي صفحة يُفشل الاستدعاء كله.
عنصر واحد في كل مرة
for (Map<String, Object> thread : client.threads().iterate(RequestOptions.of("query", "invoice"))) { if (Boolean.TRUE.equals(thread.get("hasUnread"))) { System.out.println(thread.get("id")); break; }} long starred = client.threads().iterate(RequestOptions.of("labelIds", "STARRED")).stream().count(); System.out.println(starred);دالة iterate تعيد PagedIterable، وهو لا يطلب الصفحة التالية إلا حين تصل إليها الحلقة، لذا توقف break الطلبات. تعطي stream() المرور نفسه على هيئة Stream، وتجمعه toList().
يتوقف المكرِّر حين تكرر الواجهة البرمجية مؤشرًا سبق أن تبعه، فلا يمكن أن يدور المرور إلى ما لا نهاية.