class Clever::Types::Student

Attributes

first_name[R]
last_name[R]
provider[R]
uid[R]

Public Class Methods

new(attributes = {}, client: nil) click to toggle source
# File lib/clever/types/student.rb, line 11
def initialize(attributes = {}, client: nil)
  @district_username = attributes.dig('credentials', 'district_username')
  @email             = attributes['email']
  @first_name        = attributes['name']['first']
  @last_name         = attributes['name']['last']
  @provider          = 'clever'
  @sis_id            = attributes.dig('roles', 'student', 'sis_id')
  @uid               = attributes['id']
  @username          = username(client)
end

Public Instance Methods

to_h() click to toggle source
# File lib/clever/types/student.rb, line 28
def to_h
  {
    uid: @uid,
    first_name: @first_name,
    last_name: @last_name,
    username: @username,
    provider: @provider
  }
end
username(client = nil) click to toggle source
# File lib/clever/types/student.rb, line 22
def username(client = nil)
  username_source = client&.username_source

  @username ||= presence(username_from(username_source)) || default_username
end

Private Instance Methods

default_username() click to toggle source
# File lib/clever/types/student.rb, line 46
def default_username
  presence(@district_username) || presence(@email) || @sis_id
end
username_from(username_source) click to toggle source
# File lib/clever/types/student.rb, line 40
def username_from(username_source)
  return if blank?(username_source)

  presence(instance_variable_get("@#{username_source}"))
end