class Egnyte::User

Attributes

active[RW]
authType[RW]
email[RW]
externalId[RW]
familyName[RW]
formatted[RW]
givenName[RW]
id[R]
idpUserId[RW]
sendInvite[RW]
userName[RW]
userPrincipalName[RW]
userType[RW]

Public Class Methods

all(session) click to toggle source
# File lib/egnyte/user.rb, line 54
def self.all(session)
  self.where(session)
end
create(session, params) click to toggle source
# File lib/egnyte/user.rb, line 58
def self.create(session, params)
  user = self.new(session, params)
  user.save
end
delete(session, id) click to toggle source
# File lib/egnyte/user.rb, line 134
def self.delete(session, id)
  session.delete("#{self.user_path(session)}/#{id}", return_parsed_response=true)
end
find(session, id) click to toggle source
# File lib/egnyte/user.rb, line 63
def self.find(session, id)
  response = session.get("#{self.user_path(session)}/#{id}", return_parsed_response=true)
  self.new(session, response)
end
find_by_email(session, email) click to toggle source
# File lib/egnyte/user.rb, line 68
def self.find_by_email(session, email)
  self.where(session, {"email" => email}).first
end
new(session, params) click to toggle source
# File lib/egnyte/user.rb, line 41
def initialize(session, params)
  @session = session
  params.each do |k,v|
    if k.to_s == "name" # dig into nested name if passed in Egnyte format
      params[k].each do |name_k,v|
        instance_variable_set("@#{name_k}", v)
      end
    else
      instance_variable_set("@#{k}", v)
    end
  end
end
user_path(session) click to toggle source
# File lib/egnyte/user.rb, line 194
def self.user_path(session)
  "https://#{session.domain}.#{EGNYTE_DOMAIN}/#{session.api}/v2/users"
end
user_permission_path(session) click to toggle source
# File lib/egnyte/user.rb, line 202
def self.user_permission_path(session)
  "https://#{session.domain}.#{EGNYTE_DOMAIN}/#{session.api}/v1/perms/user"
end
where(session, params=nil) click to toggle source
# File lib/egnyte/user.rb, line 72
def self.where(session, params=nil)
  startIndex = 1
  user_count = nil
  itemsPerPage = 100
  user_list = []
  base_url = self.user_path(session)
  base_url += Egnyte::Helper.params_to_filter_string(params) if params
  while startIndex == 1 || user_count > startIndex
    url = base_url
    url += params.nil? ? '?' : '&'
    url += "startIndex=#{startIndex}&count=#{itemsPerPage}"
    parsed_body = session.get(url)
    parsed_body["resources"].each do |user_hash|
      user_list << self.new(session, user_hash)
    end
    user_count = parsed_body["totalResults"]
    startIndex += itemsPerPage
  end
  user_list
end

Public Instance Methods

delete() click to toggle source
# File lib/egnyte/user.rb, line 122
def delete
  Egnyte::User.delete(@session, @id)
end
missing_attributes() click to toggle source
# File lib/egnyte/user.rb, line 142
def missing_attributes
  missing = @@required_attributes.collect do |param|
    param unless instance_variable_get("@#{param}")
  end
  missing.compact
end
permissions(folder_path) click to toggle source
# File lib/egnyte/user.rb, line 185
def permissions(folder_path)
  url = "#{user_permission_path}/#{userName}?folder=#{CGI.escape(folder_path)}"
  @session.get(url, return_parsed_response=true)
end
save() click to toggle source
# File lib/egnyte/user.rb, line 110
def save
  raise Egnyte::MissingAttribute.new(missing_attributes) unless valid?
  response = ''
  if @id.nil? or @id.to_s.empty?
    response = @session.post(user_path, to_json, return_parsed_response=true)
    @id = response['id']
  else
    response = @session.patch("#{user_path}/#{@id}", to_json_for_update, return_parsed_response=true)
  end
  user = Egnyte::User.new(@session, response)
end
to_json() click to toggle source
# File lib/egnyte/user.rb, line 149
def to_json
  hash = {name:{}}
  instance_variables.each do |iv|
    next if iv == :@session
    next if instance_variable_get(iv) == nil
    next if iv == :@formatted
    if [:@givenName, :@familyName].include? iv
      hash[:name][iv.to_s[1..-1]] = instance_variable_get(iv)
    else
      hash[iv.to_s[1..-1]] = instance_variable_get(iv)
    end
  end
  hash.to_json
end
to_json_for_update() click to toggle source
# File lib/egnyte/user.rb, line 164
def to_json_for_update
  hash = {name:{}}
  instance_variables.each do |iv|
    # next if [:@session, :@id, :@userName, :@sendInvite, :@userPrincipalName, :@emailChangePending, :@locked, :@externalId].include? iv
    next if instance_variable_get(iv) == nil || instance_variable_get(iv) == ''
    if [:@email, :@formatted, :@givenName, :@familyName, :@active, :@authType, :@userType, :@idpUserId, :@userPrincipalName].include? iv
      next if [:@formatted].include? iv  # API does not respond to this field.
      next if (iv == :@userPrincipalName || iv == :@idpUserId) && @authType == 'egnyte'
      next if iv == :@userPrincipalName #&& (@authType == 'sso' || @authType == 'egnyte')
      next if iv == :@active && @userName == @session.username
      next if iv == :@idpUserId #&& (@authType == 'ad' || @authType == 'egnyte')
      if [:@givenName, :@familyName].include? iv
        hash[:name][iv.to_s[1..-1]] = instance_variable_get(iv)
      else
        hash[iv.to_s[1..-1]] = instance_variable_get(iv)
      end
    end
  end
  hash.to_json
end
user_path() click to toggle source
# File lib/egnyte/user.rb, line 190
def user_path
  Egnyte::User.user_path(@session)
end
user_permission_path() click to toggle source
# File lib/egnyte/user.rb, line 198
def user_permission_path
  Egnyte::User.user_permission_path(@session)
end
valid?() click to toggle source
# File lib/egnyte/user.rb, line 138
def valid?
  return missing_attributes.size < 1
end