class RubyD2L::User

Public Class Methods

connect(site_url) click to toggle source
# File lib/ruby-d2l/user.rb, line 4
def self.connect(site_url)
  Savon::Client.new do
    wsdl.document = "#{site_url}/D2LWS/UserManagementService-v1.asmx?WSDL"
    wsdl.endpoint = "#{site_url}/D2LWS/UserManagementService-v1.asmx"
    http.auth.ssl.verify_mode = :none
  end
end
enroll_user(params={}) click to toggle source

EnrollUser

REQUIRED

{ :org_unit_id => “ID, ”:user_id => “ID”, :role_id => “ID” }

RETURNS
# File lib/ruby-d2l/user.rb, line 58
def self.enroll_user(params={})
  self.required_params(params, [:org_unit_id, :user_id, :role_id])
  
  params = {
    :org_unit_id => "",
    :user_id => "",
    :role_id => ""
  }.merge(params)

  token = RubyD2L::Auth.get_token
  
  the_xml = '<?xml version="1.0" encoding="utf-8"?>
  <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header>
    <RequestHeader xmlns="http://www.desire2learn.com/services/common/xsd/common-v1_0">
      <Version>1.0</Version>
      <CorellationId>12345</CorellationId>
      <AuthenticationToken>'+ token +'</AuthenticationToken>
    </RequestHeader>
    </soap:Header>
    <soap:Body>
      <EnrollUserRequest xmlns="http://www.desire2learn.com/services/ums/wsdl/UserManagementService-v1_0">
        <OrgUnitId>
          <Id xmlns="http://www.desire2learn.com/services/common/xsd/common-v1_0">'+ params[:org_unit_id] +'</Id>
          <Source xmlns="http://www.desire2learn.com/services/common/xsd/common-v1_0">Desire2Learn</Source>
        </OrgUnitId>
        <UserId>
          <Id xmlns="http://www.desire2learn.com/services/common/xsd/common-v1_0">'+ params[:user_id] +'</Id>
          <Source xmlns="http://www.desire2learn.com/services/common/xsd/common-v1_0">Desire2Learn</Source>
        </UserId>
        <RoleId>
          <Id xmlns="http://www.desire2learn.com/services/common/xsd/common-v1_0">'+ params[:role_id] +'</Id>
          <Source xmlns="http://www.desire2learn.com/services/common/xsd/common-v1_0">Desire2Learn</Source>
        </RoleId>
      </EnrollUserRequest>
    </soap:Body>
  </soap:Envelope>'
  
  enrollment = self.connect(RubyD2L.site_url).request :enroll_user do
    soap.xml = the_xml
  end
  
  if enrollment.to_hash.include?(:enroll_user_response)
    response = enrollment.to_hash[:enroll_user_response]
    response_hash = Tools.get_all_values_nested(response)
    if response_hash.keys.any? {|k| k.include? "business_errors"}
      return response_hash.keep_if {|k,v| k.include? "business_errors"}
    else
      return response_hash
    end
  else
    return false
  end
  
end
get_roles() click to toggle source

EnrollUser

REQUIRED

N/A

RETURNS

Array of roles

# File lib/ruby-d2l/user.rb, line 117
def self.get_roles()
  token = RubyD2L::Auth.get_token
  
  the_xml = '<?xml version="1.0" encoding="utf-8"?>
  <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header>
     <RequestHeader xmlns="http://www.desire2learn.com/services/common/xsd/common-v1_0">
       <Version>1.0</Version>
       <CorellationId>12345</CorellationId>
       <AuthenticationToken>'+ token +'</AuthenticationToken>
     </RequestHeader>
    </soap:Header>
    <soap:Body>
      <GetRolesRequest xmlns="http://www.desire2learn.com/services/ums/wsdl/UserManagementService-v1_0" />
    </soap:Body>
  </soap:Envelope>'
    
  roles = self.connect(RubyD2L.site_url).request :get_roles do
    soap.xml = the_xml
  end
  
  response = roles.to_hash[:get_roles_response]
  @role_info = []
  if response.include?(:roles)
    response[:roles][:role_info].each do |r|
      @role_info << Tools.get_all_values_nested(r)
    end
    return @role_info
  else
    return false
  end
end
get_user_by_user_name(params={}) click to toggle source
# File lib/ruby-d2l/user.rb, line 152
def self.get_user_by_user_name(params={})
  self.required_params(params, :user_name)
  
  params = {
    :user_name => ""
  }.merge(params)

  token = RubyD2L::Auth.get_token
  
  the_xml = '<?xml version="1.0" encoding="utf-8"?>
  <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header>
     <RequestHeader xmlns="http://www.desire2learn.com/services/common/xsd/common-v1_0">
       <Version>1.0</Version>
       <CorellationId>12345</CorellationId>
       <AuthenticationToken>'+ token +'</AuthenticationToken>
     </RequestHeader>
    </soap:Header>
    <soap:Body>
      <GetUserByUserNameRequest xmlns="http://www.desire2learn.com/services/ums/wsdl/UserManagementService-v1_0">
        <UserName>'+ params[:user_name] +'</UserName>
      </GetUserByUserNameRequest>
    </soap:Body>
  </soap:Envelope>'
  
  user = self.connect(RubyD2L.site_url).request :get_user_by_user_name do
    soap.xml = the_xml
  end
  
  # ap user.to_hash
  #   exit
  
  response = user.to_hash[:get_user_response]
  if response.include?(:user)
    return Tools.get_all_values_nested(response)
  else
    return false
  end
  
end
list_soap_actions(params) click to toggle source
# File lib/ruby-d2l/user.rb, line 12
def self.list_soap_actions(params)
  # Get available SOAP actions

  site_url = params[0]
  ap connect(site_url).wsdl.soap_actions
  
  # [
  #     [ 0] :get_active_course_offerings_ex,
  #     [ 1] :get_active_course_offerings,
  #     [ 2] :activate_users,
  #     [ 3] :deactivate_users,
  #     [ 4] :get_user_activation_status,
  #     [ 5] :create_auditor_relationship,
  #     [ 6] :remove_auditor_relationship,
  #     [ 7] :get_auditors,
  #     [ 8] :get_auditees,
  #     [ 9] :get_users_by_org_unit_role,
  #     [10] :create_user,
  #     [11] :delete_user,
  #     [12] :get_user,
  #     [13] :update_user,
  #     [14] :delete_user_by_user_name,
  #     [15] :delete_user_by_org_defined_id,
  #     [16] :get_user_by_user_name,
  #     [17] :get_user_by_org_defined_id,
  #     [18] :get_roles,
  #     [19] :get_role,
  #     [20] :change_password,
  #     [21] :enroll_user,
  #     [22] :unenroll_user,
  #     [23] :get_org_unit_enrollment,
  #     [24] :get_enrollments_by_org_unit,
  #     [25] :get_profile_by_user,
  #     [26] :get_profile_picture,
  #     [27] :update_profile,
  #     [28] :get_users_by_group,
  #     [29] :get_users_by_section,
  #     [30] :get_users_by_course_offerings_index,
  #     [31] :get_permitted_tasks_by_user_org_unit
  # ]
  
end
required_params(passed_params={},*args) click to toggle source
# File lib/ruby-d2l/user.rb, line 193
def self.required_params(passed_params={},*args)
  required_params = *args[0]
  required_params.each do |key|
    raise ArgumentError.new("MISSING PARAM -- :#{key} parameter is required!") unless passed_params.has_key?(key)
  end
end