lib/firebase-admin/configuration.rb in firebase-admin-0.1.6 vs lib/firebase-admin/configuration.rb in firebase-admin-0.2.0
- old
+ new
@@ -11,10 +11,12 @@
connection_options
endpoint
user_agent
project_id
loud_logger
+ service_account_email
+ service_account_private_key
].freeze
# By default, don't set a user access token
DEFAULT_ACCESS_TOKEN = 'owner'.freeze
@@ -45,10 +47,22 @@
DEFAULT_LOUD_LOGGER = nil
# @private
attr_accessor(*VALID_OPTIONS_KEYS)
+ def service_account_email
+ @service_account_email ||= service_account_credentials.fetch('client_email') do
+ ENV['GOOGLE_CLIENT_EMAIL']
+ end
+ end
+
+ def service_account_private_key
+ @service_account_private_key ||= service_account_credentials.fetch('private_key') do
+ ENV['GOOGLE_PRIVATE_KEY']
+ end
+ end
+
# When this module is extended, set all configuration options to their default values
def self.extended(base)
base.reset
end
@@ -62,17 +76,37 @@
VALID_OPTIONS_KEYS.inject({}) do |option, key|
option.merge!(key => send(key))
end
end
+ def service_account_credentials
+ return {} unless ENV['GOOGLE_APPLICATION_CREDENTIALS']
+
+ @service_account_credentials ||= read_service_account_credentials(ENV['GOOGLE_APPLICATION_CREDENTIALS'])
+ end
+
+ def read_service_account_credentials(credentials_path)
+ if credentials_path && File.exist?(credentials_path)
+ JSON.parse(File.read(credentials_path))
+ else
+ {}
+ end
+ rescue StandardError => e
+ raise InvalidCredentials,
+ "Failed reading credentials from '#{ENV['GOOGLE_APPLICATION_CREDENTIALS']}'. Error: #{e.message}"
+ end
+
# Reset all configuration options to defaults
def reset
self.access_token = DEFAULT_ACCESS_TOKEN
self.adapter = DEFAULT_ADAPTER
self.connection_options = DEFAULT_CONNECTION_OPTIONS
self.endpoint = DEFAULT_ENDPOINT
self.user_agent = DEFAULT_USER_AGENT
self.project_id = DEFAULT_PROJECT_ID
self.loud_logger = DEFAULT_LOUD_LOGGER
+ @service_account_credentials = nil
+ self.service_account_email = nil
+ self.service_account_private_key = nil
end
end
end