Class: PandaPal::Platform
- Inherits:
-
Object
- Object
- PandaPal::Platform
- Defined in:
- app/models/panda_pal/platform.rb
Defined Under Namespace
Class Method Summary collapse
- .deserialize(params) ⇒ Object
- .materialize_extension(org) ⇒ Object
- .resolve_platform(params) ⇒ Object
- .resolve_platform_class(params) ⇒ Object
- .resolve_raw_platform(params) ⇒ Object
Instance Method Summary collapse
-
#initialize(params) ⇒ Platform
constructor
A new instance of Platform.
- #public_jwks ⇒ Object
- #serialize ⇒ Object
Constructor Details
#initialize(params) ⇒ Platform
Returns a new instance of Platform.
8 9 10 |
# File 'app/models/panda_pal/platform.rb', line 8 def initialize(params) @issuer = params[:iss] end |
Class Method Details
.deserialize(params) ⇒ Object
30 31 32 |
# File 'app/models/panda_pal/platform.rb', line 30 def self.deserialize(params) params[:platform_class].safe_constantize.new(params) end |
.materialize_extension(org) ⇒ Object
75 76 77 78 79 80 81 82 83 |
# File 'app/models/panda_pal/platform.rb', line 75 def self.materialize_extension(org) return nil unless defined?(self::OrgExtension) ext_mod = self::OrgExtension org = org.dup org.extend(ext_mod) org end |
.resolve_platform(params) ⇒ Object
41 42 43 44 |
# File 'app/models/panda_pal/platform.rb', line 41 def self.resolve_platform(params) resolved = resolve_raw_platform(params) resolved.is_a?(Class) ? resolved.new({ iss: params[:iss] }) : resolved end |
.resolve_platform_class(params) ⇒ Object
46 47 48 49 |
# File 'app/models/panda_pal/platform.rb', line 46 def self.resolve_platform_class(params) resolved = resolve_raw_platform(params) resolved.is_a?(Class) ? resolved : resolved.class end |
.resolve_raw_platform(params) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'app/models/panda_pal/platform.rb', line 51 def self.resolve_raw_platform(params) platform = PandaPal.[:platform] || "canvas.instructure.com" if platform.is_a? Symbol platform_const = Object.send(platform, params) return platform_const if platform_const elsif platform.is_a? Proc platform_const = platform.call(params) return platform_const if platform_const else return Platform::Canvas if platform == "canvas.instructure.com" platform_const = platform.safe_constantize return platform_const if platform_const.is_a? Class end # TODO Default logic? return Platform::Canvas if Platform::Canvas::KNOWN_ISSUERS.include?(params[:iss]) raise "Unknown platform '#{platform}'" end |
Instance Method Details
#public_jwks ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'app/models/panda_pal/platform.rb', line 12 def public_jwks require "json/jwt" jwk_json = Rails.cache.fetch("panda_pal/jwks/#{jwks_url}") jwk_json ||= begin response = HTTParty.get(jwks_url) response.success? ? response.body : nil end return nil unless jwk_json.present? Rails.cache.write("panda_pal/jwks/#{jwks_url}", jwk_json, expires_in: 24.hours) JSON::JWK::Set.new(JSON.parse(jwk_json)) rescue nil end |
#serialize ⇒ Object
34 35 36 37 38 39 |
# File 'app/models/panda_pal/platform.rb', line 34 def serialize { platform_class: self.class.to_s, iss: @issuer, } end |