class OpenIDConnect::ConnectObject

Attributes

raw_attributes[RW]

Public Class Methods

all_attributes() click to toggle source
# File lib/openid_connect/connect_object.rb, line 15
def self.all_attributes
  required_attributes + optional_attributes
end
new(attributes = {}) click to toggle source
# File lib/openid_connect/connect_object.rb, line 7
def initialize(attributes = {})
  all_attributes.each do |_attr_|
    self.send :"#{_attr_}=", attributes[_attr_]
  end
  self.raw_attributes = attributes
  attr_missing!
end

Public Instance Methods

all_attributes() click to toggle source
# File lib/openid_connect/connect_object.rb, line 18
def all_attributes
  self.class.all_attributes
end
as_json(options = {}) click to toggle source
# File lib/openid_connect/connect_object.rb, line 29
def as_json(options = {})
  options ||= {} # options can be nil when to_json is called without options
  validate! unless options[:skip_validation]
  all_attributes.inject({}) do |hash, _attr_|
    value = self.send(_attr_)
    hash.merge! _attr_ => case value
    when ConnectObject
      value.as_json options
    else
      value
    end
  end.delete_if do |key, value|
    value.nil?
  end
end
require_at_least_one_attributes() click to toggle source
# File lib/openid_connect/connect_object.rb, line 22
def require_at_least_one_attributes
  all_blank = all_attributes.all? do |key|
    self.send(key).blank?
  end
  errors.add :base, 'At least one attribute is required' if all_blank
end
validate!() click to toggle source
# File lib/openid_connect/connect_object.rb, line 45
def validate!
  valid? or raise ValidationFailed.new(self)
end