Sha256: 7a1543cae0b1c494c1cec61ae9380229c934ffda27df48778f8f9a50ba87e283

Contents?: true

Size: 1.01 KB

Versions: 3

Compression:

Stored size: 1.01 KB

Contents

# frozen_string_literal: true

class Cognito
  class Client
    class Params
      class Identity < self
        include AbstractType, Anima.new(:name, :phone_number)

        abstract_method :relationships

        def to_h
          relationship_params.tap do |params|
            params[:data][:attributes] = attributes unless attributes.empty?
          end
        end

        def relationship_params
          {
            data: {
              type:          self.class::TYPE,
              relationships: relationships
            }
          }
        end

        private

        def attributes
          full_attributes.reject { |_, val| val.instance_of?(Omitted) }
        end
        memoize :attributes

        def full_attributes
          {
            name:  name,
            phone: phone
          }
        end

        def phone
          return phone_number if phone_number.instance_of?(Omitted)

          { number: phone_number }
        end
      end # Identity
    end # Params
  end # Client
end # Cognito

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
cognito-client-0.5.2 lib/cognito/client/params/identity.rb
cognito-client-0.5.1 lib/cognito/client/params/identity.rb
cognito-client-0.5.0 lib/cognito/client/params/identity.rb