lib/firebase_id_token.rb
require 'redis'
require 'redis-namespace'
require 'httparty'
require 'jwt'
require 'active_support'
require 'active_support/time'
require 'firebase_id_token/version'
require 'firebase_id_token/exceptions/no_certificates_error'
require 'firebase_id_token/exceptions/certificates_request_error'
require 'firebase_id_token/exceptions/certificates_ttl_error'
require 'firebase_id_token/exceptions/certificate_not_found'
require 'firebase_id_token/configuration'
require 'firebase_id_token/certificates'
require 'firebase_id_token/signature'
# ## List of available methods
# + {Certificates.request}
# + {Certificates.request!}
# + {Certificates.present?}
# + {Certificates.all}
# + {Certificates.ttl}
# + {Certificates.find}
# + {Signature.verify}
# + {FirebaseIdToken.test!}
# + {Testing::Certificates.private_key}
# + {Testing::Certificates.find}
# + {Testing::Certificates.private_key}
# + {Testing::Certificates.certificate}
#
# ## Configuration
#
# You need to set your Firebase Project ID. Additionally you can set your Redis
# server instance in case you don't use Redis defaults.
#
# **WARNING:** Your `project_ids` must be a `Array`.
# ```
# FirebaseIdToken.configure do |config|
# config.project_ids = ['my-project-id', 'another-project-id']
# congig.redis = Redis.new(:host => "10.0.1.1", :port => 6380, :db => 15)
# end
# ```
#
# **Defaults**
# + `project_ids` => `[]`
# + `redis` => `Redis.new`
#
module FirebaseIdToken
class << self
attr_writer :configuration
end
def self.configuration
@configuration ||= Configuration.new
end
# Resets Configuration to defaults.
def self.reset
@configuration = Configuration.new
end
def self.configure
yield configuration
end
# Method for starting test mode.
# You can verify with a test certificate or you can use a test private key to verify the token.
# When using, write it at the beginning of the test.
# @example
# class ActiveSupport::TestCase
# setup do
# FirebaseIdToken.test!
# end
# end
def self.test!
require 'firebase_id_token/testing/certificates'
self.configuration.certificates = FirebaseIdToken::Testing::Certificates
end
end