class GmailOauth::Client
Attributes
access_token[R]
email[R]
imap[R]
Public Class Methods
new(imap_client, email_param, access_token_param)
click to toggle source
Initialize a new imap session and authenticate using the oauth2 access token.
# File lib/gmail_oauth/client.rb, line 7 def initialize(imap_client, email_param, access_token_param) @imap = imap_client @email = email_param @access_token = access_token_param GmailOauth::GmailImapExtensions.patch_net_imap_response_parser imap. instance_variable_get("@parser").singleton_class end
Public Instance Methods
connect()
click to toggle source
# File lib/gmail_oauth/client.rb, line 15 def connect imap.authenticate('XOAUTH2', email, access_token) end
fetch_emails(uids) { |message| ... }
click to toggle source
# File lib/gmail_oauth/client.rb, line 29 def fetch_emails(uids, &block) messages = Array.new uids.each_slice(10) do |grp| connect if imap.disconnected? emails = imap.uid_fetch(grp.compact, 'RFC822') emails.each do |email| message = GmailOauth::Message.new(Mail. read_from_string(email.attr['RFC822']), email.attr['UID']) yield(message) if block_given? messages << message end end messages end
fetch_threaded_emails(thread_id) { |thread_id, messages| ... }
click to toggle source
# File lib/gmail_oauth/client.rb, line 44 def fetch_threaded_emails(thread_id, &block) email_uids = imap.uid_search("X-GM-THRID #{thread_id}") messages = fetch_emails(email_uids) yield(thread_id, messages) if block_given? messages end
get_thread_ids(uids)
click to toggle source
# File lib/gmail_oauth/client.rb, line 51 def get_thread_ids(uids) thread_responses = imap.uid_fetch(uids, '(X-GM-THRID)') thread_responses.map { |t| t.attr['X-GM-THRID'] } end
get_uids(last_seen_uid=0)
click to toggle source
# File lib/gmail_oauth/client.rb, line 25 def get_uids(last_seen_uid=0) imap.uid_search(search_param(last_seen_uid)) end
select_mailbox(mailbox='INBOX')
click to toggle source
Select appropriate mailbox. Ex: ‘INBOX’, ‘[Gmail]/All Mail’, ‘[Gmail]/Drafts’, ‘[Gmail]/Spam’, ‘[Gmail]/Trash’, ‘[Gmail]/Starred’
# File lib/gmail_oauth/client.rb, line 21 def select_mailbox(mailbox='INBOX') imap.select(mailbox) end
Private Instance Methods
search_param(last_seen_uid)
click to toggle source
# File lib/gmail_oauth/client.rb, line 58 def search_param(last_seen_uid) return "ALL" if last_seen_uid == 0 next_uid = last_seen_uid.to_i + 1 return "UID #{next_uid}:*" end