Sha256: 265dae2a85cfd04e6532ef300464a463e636198390ddbdfe6f4e3415fea8f384
Contents?: true
Size: 1.47 KB
Versions: 9
Compression:
Stored size: 1.47 KB
Contents
module PandaPal class Session < PandaPalRecord belongs_to :panda_pal_organization, class_name: 'PandaPal::Organization', optional: true after_initialize do self.session_key ||= SecureRandom.urlsafe_base64(60) end def lti_platform return nil unless data[:lti_platform].present? @lti_platform ||= Platform.from_serialized(data[:lti_platform]) end def custom_lti_params launch_params = data[:launch_params] || {} # LT 1.3 custom_params = launch_params["https://purl.imsglobal.org/spec/lti/claim/custom"] return custom_params if custom_params.present? # LTI 1.0/1.1 custom_params = {} launch_params.each do |k, v| next unless k.start_with?("custom_") custom_params[k[7..-1]] = v end custom_params.with_indifferent_access end class DataSerializer def self.load(str) return {} unless str.present? begin parsed = JSON.parse(str) rescue JSON::ParserError parsed = yaml_load(str) end parsed.is_a?(Hash) ? HashWithIndifferentAccess.new(parsed) : parsed end def self.dump(obj) JSON.dump(obj) end private if YAML.respond_to?(:unsafe_load) def self.yaml_load(payload) YAML.unsafe_load(payload) end else def self.yaml_load(payload) YAML.load(payload) end end end serialize :data, DataSerializer end end
Version data entries
9 entries across 9 versions & 1 rubygems