Class: Firecord::Credentials
Instance Method Summary collapse
- #generate_access_token ⇒ Object
- #generate_jwt_assertion ⇒ Object
-
#initialize(credentials_file = nil) ⇒ Credentials
constructor
A new instance of Credentials.
- #project_id ⇒ Object
Constructor Details
#initialize(credentials_file = nil) ⇒ Credentials
Returns a new instance of Credentials.
5 6 7 8 9 |
# File 'lib/firecord/credentials.rb', line 5 def initialize(credentials_file = nil) @credentials = \ JSON.parse(File.read(credentials_file || Firecord.credentials_file)) @private_key = OpenSSL::PKey::RSA.new @credentials['private_key'] end |
Instance Method Details
#generate_access_token ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/firecord/credentials.rb', line 27 def generate_access_token uri = URI.parse(@credentials['token_uri']) https = Net::HTTP.new(uri.host, uri.port) https.use_ssl = true req = Net::HTTP::Post.new(uri.path) req['Cache-Control'] = 'no-store' req.set_form_data( grant_type: 'urn:ietf:params:oauth:grant-type:jwt-bearer', assertion: generate_jwt_assertion ) resp = JSON.parse(https.request(req).body) resp['access_token'] end |
#generate_jwt_assertion ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/firecord/credentials.rb', line 15 def generate_jwt_assertion now_seconds = Time.now.to_i payload = { iss: @credentials['client_email'], aud: @credentials['token_uri'], iat: now_seconds, exp: now_seconds + (60 * 60), scope: 'https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/firebase.database' } JWT.encode payload, @private_key, 'RS256' end |
#project_id ⇒ Object
11 12 13 |
# File 'lib/firecord/credentials.rb', line 11 def project_id @credentials['project_id'] end |