Sha256: 7e27c80bbfeee3e72c96464ed42f6d7e4beb12a14a5bed8d03b9973c38267db8

Contents?: true

Size: 1.8 KB

Versions: 8

Compression:

Stored size: 1.8 KB

Contents

module OpenIDConnect
  class ResponseObject
    module UserInfo
      class OpenID < ConnectObject
        attr_optional(
          :user_id,
          :name,
          :family_name,
          :given_name,
          :middle_name,
          :nickname,
          :preferred_username,
          :profile,
          :picture,
          :website,
          :gender,
          :birthday,
          :zoneinfo,
          :locale,
          :updated_time,
          :email,
          :email_verified,
          :address,
          :phone_number
        )

        validates :email_verified, :inclusion => {:in => [true, false]},                       :allow_nil => true
        validates :gender,   :inclusion => {:in => ['male', 'female']},                        :allow_nil => true
        validates :zoneinfo, :inclusion => {:in => TZInfo::TimezoneProxy.all.collect(&:name)}, :allow_nil => true
        validates :profile, :picture, :website, :url => true, :allow_nil => true
        validates :email, :email => true, :allow_nil => true
        validate :validate_address
        validate :require_at_least_one_attributes
        # TODO: validate locale

        def initialize(attributes = {})
          super
          (all_attributes - [:email_verified, :address]).each do |key|
            self.send "#{key}=", self.send(key).try(:to_s)
          end
        end

        def validate_address
          errors.add :address, address.errors.full_messages.join(', ') if address.present? && !address.valid?
        end

        def address=(hash_or_address)
          @address = case hash_or_address
          when Hash
            Address.new hash_or_address
          when Address
            hash_or_address
          end
        end
      end
    end
  end
end

Dir[File.dirname(__FILE__) + '/open_id/*.rb'].each do |file| 
  require file
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
openid_connect-0.3.3 lib/openid_connect/response_object/user_info/open_id.rb
openid_connect-0.3.2 lib/openid_connect/response_object/user_info/open_id.rb
openid_connect-0.3.1 lib/openid_connect/response_object/user_info/open_id.rb
openid_connect-0.3.0 lib/openid_connect/response_object/user_info/open_id.rb
openid_connect-0.2.4 lib/openid_connect/response_object/user_info/open_id.rb
openid_connect-0.2.3 lib/openid_connect/response_object/user_info/open_id.rb
openid_connect-0.2.2 lib/openid_connect/response_object/user_info/open_id.rb
openid_connect-0.2.1 lib/openid_connect/response_object/user_info/open_id.rb