class RailsCloudTasks::Credentials

Constants

DEFAULT_SCOPES

Attributes

auth[R]
iam_credential[R]
request_options[R]
token_request[R]

Public Class Methods

new( request_options: Google::Apis::RequestOptions.new, iam_credential: Google::Apis::IamcredentialsV1::IAMCredentialsService.new, token_request: Google::Apis::IamcredentialsV1::GenerateAccessTokenRequest, auth: Google::Auth ) click to toggle source
# File lib/rails_cloud_tasks/credentials.rb, line 9
def initialize(
  request_options: Google::Apis::RequestOptions.new,
  iam_credential: Google::Apis::IamcredentialsV1::IAMCredentialsService.new,
  token_request: Google::Apis::IamcredentialsV1::GenerateAccessTokenRequest,
  auth: Google::Auth
)
  @auth = auth
  @request_options = request_options
  @iam_credential = iam_credential
  @token_request = token_request
end

Public Instance Methods

generate(impersonate_account = nil, scopes = []) click to toggle source
# File lib/rails_cloud_tasks/credentials.rb, line 21
def generate(impersonate_account = nil, scopes = [])
  current_scopes = DEFAULT_SCOPES + scopes
  authorization = auth.get_application_default(current_scopes).dup
  request_options.authorization = authorization

  if impersonate_account
    iam_credential.generate_service_account_access_token(
      "projects/-/serviceAccounts/#{impersonate_account}",
      token_request.new(scope: current_scopes, lifetime: '3600s'),
      options: request_options
    )
  end

  request_options.authorization
end