class Object
Public Instance Methods
create_user(sis_id,full_name,email)
click to toggle source
# File exe/canvas-addusers.rb, line 139 def create_user(sis_id,full_name,email) # application/x-www-form-urlencoded # POST /api/v1/accounts/:account_id/users sel_config = @config[@active_config] parms = { "pseudonym[unique_id]" => email, "pseudonym[force_self_registration]" => true, "user[name]" => full_name, "pseudonym[sis_user_id]" => sis_id, "communication_channel[type]" => "email", "communication_channel[address]" => email, "pseudonym[send_confirmation]" => true, } begin RestClient.post "#{sel_config["url"]}/api/v1/accounts/#{sel_config["account_id"]}/users?access_token=#{sel_config["token"]}", parms, :accept => :json rescue RestClient::RequestFailed => e puts "The request failed with HTTP status code #{e.response.code}" puts "The body was:" puts e.response.body '{"id":0}' end end
display_help()
click to toggle source
# File exe/canvas-addusers.rb, line 67 def display_help puts puts "This tool is used to add users to your canvas install using an CSV file" puts "Config File: #{@config_file.colorize(:blue)}" puts puts "Options:" puts "-h or --help ".ljust(30) +"-> Display this help message" puts "-c or --config".ljust(30) +"-> Specifiy Config to use" puts "-f or --file".ljust(30) +"-> CSV File" puts "-l or --list".ljust(30) + "-> List Valid Configs" puts "-g or --generate".ljust(30) + "-> Generate an example csv file" puts exit 1 end
generate_example_config()
click to toggle source
# File exe/canvas-addusers.rb, line 16 def generate_example_config example_config = { :learnistute => { :url => "https://lms.someschool.org", :token => "PLACE YOUR ADMIN TOKEN HERE.", :account_id => 1 } } if !File.exists? @config_file puts "Config file not found".colorize(:red) puts "Generating example config: #{@config_file}".colorize(:yellow) File.open(@config_file,"w") do |f| f.write(JSON.pretty_generate(example_config)) end end end
generate_example_csv()
click to toggle source
# File exe/canvas-addusers.rb, line 45 def generate_example_csv filename = "canvas-addusers-example.csv" example_data = [ ["Name","e-mail","SIS_ID"], ["Fake3 middle Student","Fake3@example.com","4043.6"], ["Fake2 Student-dash","Fake2@example.com","4044.6"], ["Fake1 Student","Fake1@example.com","4042.6"] ] if File.exists? filename puts "I have already created an example, if you want to repeat this, try renameing the file".colorize(:red) else puts "Generating example csv: #{filename}".colorize(:yellow) s = File.open(filename,"w") csv = CSV.new(s, :force_quotes => true) example_data.each do |row| csv << row end s.close end end
list()
click to toggle source
# File exe/canvas-addusers.rb, line 122 def list table_config = [ {:key=>:name, :size=>19, :title=>"Name"}, {:key=>:url, :size=>35, :title=>"URL"}, {:key=>:account_id, :size=>15, :title=>"Account ID"} ] ConsoleTable.define(table_config) do |table| @config.each do |r| table << [ r[0].dup.colorize(:yellow), r[1]["url"], r[1]["account_id"] ] end end end
load_config()
click to toggle source
# File exe/canvas-addusers.rb, line 33 def load_config if File.exists? @config_file puts "Found config file: #{@config_file}" begin @config = JSON.parse(File.read @config_file) rescue puts "I'm So Sorry, I can't open or read or find your config file (#{@config_file})".colorize(:red) exit 1 end end end
parse_cli()
click to toggle source
# File exe/canvas-addusers.rb, line 82 def parse_cli if ARGV[0] == nil display_help end parser = GetoptLong.new parser.set_options(["-h", "--help", GetoptLong::NO_ARGUMENT], ["-c", "--config", GetoptLong::NO_ARGUMENT], ["-f", "--fqdn", GetoptLong::NO_ARGUMENT], ["-l", "--list", GetoptLong::NO_ARGUMENT], ["-g", "--generate", GetoptLong::NO_ARGUMENT] ) begin begin opt,arg = parser.get_option break if not opt case opt when "-h" || "--help" display_help exit when "-c" || "--config" @active_config = ARGV[0].strip() when "-f" || "--file" @file = ARGV[0].strip() when "-l" || "--list" list when "-g" || "--generate" generate_example_csv end rescue => err puts "#{err.class()}: #{err.message}" puts "this should never happen, Did'nt i warn you?".red.blink display_help exit end end while 1 end
run_import()
click to toggle source
# File exe/canvas-addusers.rb, line 163 def run_import if @file.nil? or !File.file? @file puts "Import file not found, please check your path".red end new_user_list = CSV.read(@file, headers:true) new_user_list.each do |u| puts "Adding #{u["Name"]}, #{u["e-mail"]}".blue result = JSON.parse(create_user(u["SIS_ID"],u["Name"],u["e-mail"])) puts "Canvas ID: #{result["id"]}".yellow end end