1+ # frozen_string_literal: true
2+
3+ require_relative "../lib/resend"
4+
5+ raise if ENV [ "RESEND_API_KEY" ] . nil?
6+
7+ Resend . api_key = ENV [ "RESEND_API_KEY" ]
8+
9+ puts "=== Resend Ruby SDK Pagination Examples ==="
10+ puts
11+
12+ # API Keys pagination
13+ puts "1. API Keys Pagination:"
14+ puts "List first 5 API keys:"
15+ api_keys = Resend ::ApiKeys . list ( { limit : 5 } )
16+ puts api_keys
17+ puts "Has more: #{ api_keys [ :has_more ] } " if api_keys . key? ( :has_more )
18+ puts
19+
20+ # Audiences pagination
21+ puts "2. Audiences Pagination:"
22+ puts "List first 10 audiences:"
23+ audiences = Resend ::Audiences . list ( { limit : 10 } )
24+ puts audiences
25+ puts "Has more: #{ audiences [ :has_more ] } " if audiences . key? ( :has_more )
26+ puts
27+
28+ # If we have audiences, demonstrate pagination with 'after'
29+ if audiences [ :data ] && !audiences [ :data ] . empty?
30+ first_audience_id = audiences [ :data ] . first [ :id ]
31+ puts "List audiences after '#{ first_audience_id } ':"
32+ next_audiences = Resend ::Audiences . list ( { limit : 5 , after : first_audience_id } )
33+ puts next_audiences
34+ puts
35+ end
36+
37+ # Domains pagination
38+ puts "3. Domains Pagination:"
39+ puts "List first 3 domains:"
40+ domains = Resend ::Domains . list ( { limit : 3 } )
41+ puts domains
42+ puts "Has more: #{ domains [ :has_more ] } " if domains . key? ( :has_more )
43+ puts
44+
45+ # Broadcasts pagination
46+ puts "4. Broadcasts Pagination:"
47+ puts "List first 2 broadcasts:"
48+ broadcasts = Resend ::Broadcasts . list ( { limit : 2 } )
49+ puts broadcasts
50+ puts "Has more: #{ broadcasts [ :has_more ] } " if broadcasts . key? ( :has_more )
51+ puts
52+
53+ # Contacts pagination (requires an audience ID)
54+ puts "5. Contacts Pagination:"
55+ if audiences [ :data ] && !audiences [ :data ] . empty?
56+ audience_id = audiences [ :data ] . first [ :id ]
57+ if audience_id && !audience_id . empty?
58+ puts "List first 5 contacts from audience '#{ audience_id } ':"
59+ begin
60+ contacts = Resend ::Contacts . list ( audience_id , { limit : 5 } )
61+ puts contacts
62+ puts "Has more: #{ contacts [ :has_more ] } " if contacts . key? ( :has_more )
63+ rescue Resend ::Error => e
64+ puts "Error listing contacts: #{ e . message } "
65+ puts "(This might happen if the audience has no contacts or access is restricted)"
66+ end
67+ else
68+ puts "Audience ID is empty, skipping contacts pagination example"
69+ end
70+ else
71+ puts "No audiences available for contacts pagination example"
72+ end
73+ puts
74+
75+ puts "=== Pagination Parameters ==="
76+ puts "• limit: Number of items to retrieve (1-100)"
77+ puts "• after: ID after which to retrieve more items"
78+ puts "• before: ID before which to retrieve more items"
79+ puts
80+ puts "Example usage:"
81+ puts "Resend::ApiKeys.list({ limit: 25, after: 'key_123' })"
82+ puts "Resend::Domains.list({ limit: 10, before: 'domain_456' })"
83+ puts "Resend::Contacts.list('audience_id', { limit: 50 })"
0 commit comments