class GmailCli::Imap

Attributes

imap[RW]
oauth_options[RW]
options[RW]

Public Class Methods

new(options={}) click to toggle source
# File lib/gmail_cli/imap.rb, line 18
def initialize(options={})
  options = options.dup
  @oauth_options = {
    client_id: options.delete(:client_id),
    client_secret: options.delete(:client_secret),
    access_token: options.delete(:access_token),
    refresh_token: options.delete(:refresh_token)
  }
  @options = {
    host: 'imap.gmail.com'
  }.merge(options)
  @options[:host_options] ||= {
    port: 993,
    ssl: true
  }
end

Public Instance Methods

connect!() click to toggle source
# File lib/gmail_cli/imap.rb, line 52
def connect!
  disconnect!
  refresh_access_token! # we cheat a bit here - refreshing the token every time we get a new connection
  trace "#{__method__} to host", host
  self.imap = Net::IMAP.new(host,host_options)
  trace "imap capabilities", imap.capability
  imap.authenticate('XOAUTH2', username, oauth_access_token)
  imap
end
disconnect!() click to toggle source
# File lib/gmail_cli/imap.rb, line 62
def disconnect!
  return unless imap
  trace "calling", __method__
  imap.close
  self.imap = nil
rescue Exception => e
  trace "#{__method__} error", e
end
host() click to toggle source
# File lib/gmail_cli/imap.rb, line 39
def host
  options[:host]
end
host_options() click to toggle source
# File lib/gmail_cli/imap.rb, line 45
def host_options
  options[:host_options]
end
oauth_access_token() click to toggle source
# File lib/gmail_cli/imap.rb, line 48
def oauth_access_token
  oauth_options[:access_token]
end
refresh_access_token!() click to toggle source
# File lib/gmail_cli/imap.rb, line 35
def refresh_access_token!
  oauth_options[:access_token] = GmailCli::Oauth2Helper.new(oauth_options).refresh_access_token!
end
username() click to toggle source
# File lib/gmail_cli/imap.rb, line 42
def username
  options[:username]
end