class Csv::Ldap
Constants
- DEFAULT_HEADERS
- DEFAULT_OUTPUT_FILE_PATH
- DEFAULT_TREE_BASE
- VERSION
Attributes
errors[RW]
ldap[RW]
Public Class Methods
new(args)
click to toggle source
# File lib/csv/ldap.rb, line 13 def initialize(args) @ldap = Net::LDAP.new args end
Public Instance Methods
add_header()
click to toggle source
# File lib/csv/ldap.rb, line 69 def add_header CSV.open(@output_file_path, 'w+', { force_quotes: false }) do |csv| csv << @headers end end
bind()
click to toggle source
# File lib/csv/ldap.rb, line 17 def bind @ldap.bind end
delete(args)
click to toggle source
# File lib/csv/ldap.rb, line 21 def delete(args) @ldap.delete(args) end
export(args = {})
click to toggle source
# File lib/csv/ldap.rb, line 54 def export(args = {}) @headers = args[:headers] || DEFAULT_HEADERS @treebase = args[:treebase] || DEFAULT_TREE_BASE @output_file_path = args[:output_file_path] || DEFAULT_OUTPUT_FILE_PATH @filter ||= args[:filter] add_header CSV.open(@output_file_path, 'a+', { force_quotes: false }) do |csv| ldap.search(base: @treebase, filter: @filter) do |entry| csv << @headers.map { |x| entry.send(x).first } rescue nil end end end
import(input_file_path = nil, headers = [])
click to toggle source
# File lib/csv/ldap.rb, line 31 def import(input_file_path = nil, headers = []) @headers ||= headers.empty? ? DEFAULT_HEADERS : headers @errors = [] CSV.foreach(input_file_path, headers: true, skip_blanks: true) do |row| valid_headers row.headers dn = "cn=#{row['cn']}, ou=people, dc=example, dc=org" attr = row.to_h attr['objectclass'] = ['inetOrgPerson', 'posixAccount', 'shadowAccount'] @ldap.add(dn: dn, attributes: attr) if @ldap.get_operation_result['message'] == 'Success' puts 'Adding cn:' + row['cn'] + ' ' + @ldap.get_operation_result['message'] else puts 'Error cn:' + row['cn'] + ' ' + @ldap.get_operation_result['message'] @errors << row['cn'] + ' ' + @ldap.get_operation_result['message'] end end end
valid_headers(headers = [])
click to toggle source
# File lib/csv/ldap.rb, line 25 def valid_headers(headers = []) unless headers.all? { |header| @headers.include?(header) } raise 'Require headers to process the file.' end end