module LegatoGaUser

Constants

AUDIENCE
AUTHORIZE_URL
SCOPE
TOKEN_CREDENTIAL_URI
TOKEN_URL

Public Instance Methods

client_email(key_and_email) click to toggle source
# File lib/simple_ga_reporting/legato_ga_user.rb, line 50
def client_email(key_and_email)
  YAML.load_file(key_and_email)['client_email']
end
create_ga_user(key_and_email, private_key: nil, client_email: nil) click to toggle source

private

# File lib/simple_ga_reporting/legato_ga_user.rb, line 14
def create_ga_user(key_and_email, private_key: nil, client_email: nil)
  ga_user_private_key   = private_key.nil? ? private_key(key_and_email) : private_key
  ga_user_client_email  = client_email.nil? ? client_email(key_and_email) : client_email

  signing_key = OpenSSL::PKey::RSA.new(ga_user_private_key)
  auth_client = Signet::OAuth2::Client.new(
    token_credential_uri: TOKEN_CREDENTIAL_URI,
    audience: AUDIENCE,
    scope: SCOPE,
    issuer: ga_user_client_email,
    signing_key: signing_key,
    sub: ga_user_client_email,
  )
  access_token = auth_client.fetch_access_token!

  oauth_client = OAuth2::Client.new('', '', {
    authorize_url: AUTHORIZE_URL,
    token_url: TOKEN_URL,
  })

  token = OAuth2::AccessToken.new(
    oauth_client,
    access_token['access_token'],
    expires_in: access_token['expires_in'],
  )

  ga_user = Legato::User.new(token)
  ga_user.access_token.expired?

  ga_user
end
private_key(key_and_email) click to toggle source
# File lib/simple_ga_reporting/legato_ga_user.rb, line 46
def private_key(key_and_email)
  YAML.load_file(key_and_email)['private_key']
end