class Lionel::GoogleAuthentication

Attributes

access_token[RW]
client[W]
refresh_token[RW]

Public Instance Methods

api_console_url() click to toggle source
# File lib/lionel/google_authentication.rb, line 42
def api_console_url
  "https://code.google.com/apis/console"
end
authorization() click to toggle source
# File lib/lionel/google_authentication.rb, line 46
def authorization
  @authorization ||= begin
                       auth = client.authorization
                       auth.client_id = google_client_id
                       auth.client_secret = google_client_secret
                       auth.scope = scopes
                       auth.expires_in = one_year
                       auth.redirect_uri = "urn:ietf:wg:oauth:2.0:oob"
                       auth
                     end
end
authorize_url() click to toggle source
# File lib/lionel/google_authentication.rb, line 38
def authorize_url
  authorization.authorization_uri
end
client() click to toggle source
# File lib/lionel/google_authentication.rb, line 58
def client
  @client ||= Google::APIClient.new(auto_refresh_token: true)
end
data() click to toggle source
# File lib/lionel/google_authentication.rb, line 11
def data
  raise "No access token" unless access_token
  {
    google_token: access_token,
    google_refresh_token: refresh_token,
    google_client_id: google_client_id,
    google_client_secret: google_client_secret
  }
end
refresh() click to toggle source
# File lib/lionel/google_authentication.rb, line 28
def refresh
  return false unless refresh_token && access_token

  authorization.access_token = access_token
  authorization.refresh_token = refresh_token
  authorization.refresh!

  @access_token = authorization.access_token
end
retrieve_access_token(authorization_code) click to toggle source
# File lib/lionel/google_authentication.rb, line 21
def retrieve_access_token(authorization_code)
  authorization.code = authorization_code
  authorization.fetch_access_token!
  @access_token = authorization.access_token
  @refresh_token = authorization.refresh_token
end

Private Instance Methods

build_client() click to toggle source
# File lib/lionel/google_authentication.rb, line 64
def build_client
  auth = client.authorization
  auth.client_id = google_client_id
  auth.client_secret = google_client_secret
  auth.scope = scopes
  auth.redirect_uri = "urn:ietf:wg:oauth:2.0:oob"
  client
end
one_year() click to toggle source
# File lib/lionel/google_authentication.rb, line 85
def one_year # in seconds
  60*60*24*36
end
scopes() click to toggle source
# File lib/lionel/google_authentication.rb, line 77
def scopes
  [
    "https://docs.google.com/feeds/",
    "https://docs.googleusercontent.com/",
    "https://spreadsheets.google.com/feeds/"
  ]
end