Sha256: 5c713072cffd90f5c2936af094faf1e8d7da8614edd7d8da9b754f076ecb76b5

Contents?: true

Size: 1.52 KB

Versions: 1

Compression:

Stored size: 1.52 KB

Contents

# frozen_string_literal: true
# typed: true

module WorkOS
  # The User class provides a lightweight wrapper around a WorkOS User
  # resource. This class is not meant to be instantiated in a user space,
  # and is instantiated internally but exposed.
  class User
    include HashProvider
    extend T::Sig

    attr_accessor :id, :email, :first_name, :last_name, :email_verified,
                  :created_at, :updated_at

    sig { params(json: String).void }
    def initialize(json)
      raw = parse_json(json)

      @id = T.let(raw.id, String)
      @email = T.let(raw.email, String)
      @first_name = raw.first_name
      @last_name = raw.last_name
      @email_verified = raw.email_verified
      @created_at = T.let(raw.created_at, String)
      @updated_at = T.let(raw.updated_at, String)
    end

    def to_json(*)
      {
        id: id,
        email: email,
        first_name: first_name,
        last_name: last_name,
        email_verified: email_verified,
        created_at: created_at,
        updated_at: updated_at,
      }
    end

    private

    sig { params(json_string: String).returns(WorkOS::Types::UserStruct) }
    def parse_json(json_string)
      hash = JSON.parse(json_string, symbolize_names: true)

      WorkOS::Types::UserStruct.new(
        id: hash[:id],
        email: hash[:email],
        first_name: hash[:first_name],
        last_name: hash[:last_name],
        email_verified: hash[:email_verified],
        created_at: hash[:created_at],
        updated_at: hash[:updated_at],
      )
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
workos-3.0.0 lib/workos/user.rb