Sha256: 1e07fcea4c826af762181737070debaf4edd87633631251b476eb58b0476fb11

Contents?: true

Size: 926 Bytes

Versions: 1

Compression:

Stored size: 926 Bytes

Contents

# frozen_string_literal: true

require 'json'

module Cosensee
  # for User
  User = Data.define(:id, :name, :display_name, :email) do
    def self.from_array(users_args)
      users_args.map { |args| new(**args) }
    end

    # allow both `:display_key` and `:displayKey`
    def initialize(id:, name:, email:, **kwargs)
      display_name = if kwargs.keys == [:display_name]
                       kwargs[:display_name]
                     elsif kwargs.keys == [:displayName]
                       kwargs[:displayName]
                     else
                       raise Cosensee::Error, 'Cosensee::User.new need an argument :display_name or :displayName'
                     end
      super(
        id:,
        display_name:,
        name:,
        email:
      )
    end

    def to_obj
      { id:, name:, displayName: display_name, email: }
    end

    def to_json(*)
      to_obj.to_json(*)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cosensee-0.6.0 lib/cosensee/user.rb