class Gmail::Client::XOAuth

Attributes

consumer_key[R]
consumer_secret[R]
secret[R]
token[R]

Public Class Methods

new(username, options = {}) click to toggle source
Calls superclass method Gmail::Client::Base::new
# File lib/gmail/client/xoauth.rb, line 11
def initialize(username, options = {})
  @token           = options.delete(:token)
  @secret          = options.delete(:secret)
  @consumer_key    = options.delete(:consumer_key)
  @consumer_secret = options.delete(:consumer_secret)

  super(username, options)
end

Public Instance Methods

access_token() click to toggle source
# File lib/gmail/client/xoauth.rb, line 34
def access_token
  consumer_options = {
    :site               => "https://www.google.com",
    :request_token_path => "/accounts/OAuthGetRequestToken",
    :authorize_path     => "/accounts/OAuthAuthorizeToken",
    :access_token_path  => "/accounts/OAuthGetAccessToken"
  }
  consumer = OAuth::Consumer.new(consumer_key, consumer_secret, consumer_options)
  @access_token ||= OAuth::AccessToken.new(consumer, token, secret)
  @access_token
end
login(raise_errors = false) click to toggle source
# File lib/gmail/client/xoauth.rb, line 20
def login(raise_errors = false)
  @imap and @logged_in = (login = @imap.authenticate('XOAUTH', username,
    :consumer_key    => consumer_key,
    :consumer_secret => consumer_secret,
    :token           => token,
    :token_secret    => secret)) && login.name == 'OK'
rescue Net::IMAP::NoResponseError => e
  if raise_errors
    message = "Couldn't login to given Gmail account: #{username}"
    message += " (#{e.response.data.text.strip})"
    raise(AuthorizationError.new(e.response), message, e.backtrace)
  end
end
smtp_settings() click to toggle source
# File lib/gmail/client/xoauth.rb, line 46
def smtp_settings
  [:smtp, {
     :address => GMAIL_SMTP_HOST,
     :port => GMAIL_SMTP_PORT,
     :domain => mail_domain,
     :user_name => username,
     :password => {
       :consumer_key    => consumer_key,
       :consumer_secret => consumer_secret,
       :token           => token,
       :token_secret    => secret,
       :access_token    => access_token
     },
     :authentication => :xoauth,
     :enable_starttls_auto => true
   }]
end