class Github::Authentication::Generator::App
Attributes
app_id[R]
installation_id[R]
Public Class Methods
new(pem:, installation_id:, app_id:)
click to toggle source
# File lib/github/authentication/generator/app.rb, line 15 def initialize(pem:, installation_id:, app_id:) @private_key = OpenSSL::PKey::RSA.new(pem) @installation_id = installation_id @app_id = app_id end
Public Instance Methods
generate()
click to toggle source
# File lib/github/authentication/generator/app.rb, line 21 def generate url = "https://api.github.com/app/installations/#{installation_id}/access_tokens" response = Http.post(url) do |request| request["Authorization"] = "Bearer #{jwt}" request["Accept"] = "application/vnd.github.machine-man-preview+json" request end Token.from_json(response.body) end
Private Instance Methods
jwt()
click to toggle source
# File lib/github/authentication/generator/app.rb, line 33 def jwt payload = { # issued at time iat: Time.now.utc.to_i, # JWT expiration time (10 minute maximum) exp: Time.now.utc.to_i + (10 * 60), # GitHub App's identifier iss: app_id, } JWT.encode(payload, @private_key, "RS256") end