class Susies
Public Class Methods
new(autologins={}, whiteListFilters=nil, blackListFilters=nil, mailInfos=nil)
click to toggle source
# File lib/susies/Susies.rb, line 9 def initialize(autologins={}, whiteListFilters=nil, blackListFilters=nil, mailInfos=nil) @whiteListFilters = whiteListFilters @blackListFilters = blackListFilters @mailInfos = mailInfos @whiteListFilters[:minTime] = Time.parse(@whiteListFilters[:minTime]) if @whiteListFilters[:minTime] @whiteListFilters[:maxTime] = Time.parse(@whiteListFilters[:maxTime]) if @whiteListFilters[:maxTime] @blackListFilters[:minTime] = Time.parse(@blackListFilters[:minTime]) if @blackListFilters[:minTime] @blackListFilters[:maxTime] = Time.parse(@blackListFilters[:maxTime]) if @blackListFilters[:maxTime] @autologinPath = autologins[:autologinPath] @buddiesAutologins = autologins[:buddiesAutologins] || [] @requestsManager = IntraRequestsManager.new end
Public Instance Methods
check!()
click to toggle source
# File lib/susies/Susies.rb, line 25 def check! @requestsManager.authenticate! @autologinPath startDate = Date.today.beginning_of_week endDate = Date.today.end_of_week loop do log "Check for week #{ formatDate startDate } - #{ formatDate endDate }" susies = @requestsManager.getSusies startDate, endDate break if susies.empty? findSusie susies unless registeredThisWeek? susies startDate += 1.week endDate += 1.week end end
Private Instance Methods
findSusie(susies)
click to toggle source
# File lib/susies/Susies.rb, line 52 def findSusie(susies) log "Not already registrated: seeking susies" susies.each do |susie| log "Checking criterias of: #{ susie.to_s }" if !matchCriterias?(susie, @blackListFilters) && matchCriterias?(susie, @whiteListFilters) log "Find susie matching criterias: #{ susie.to_s }" log "Registering to susie" registerSusie susie log "Sending mails" informEveryone susie log "done" break end end end
formatDate(time)
click to toggle source
# File lib/susies/Susies.rb, line 69 def formatDate(time) time.strftime '%d-%m-%Y' end
formatTime(time)
click to toggle source
# File lib/susies/Susies.rb, line 73 def formatTime(time) time.strftime '%H:%M %d-%m-%Y' end
getRegisterMail(susie)
click to toggle source
# File lib/susies/Susies.rb, line 77 def getRegisterMail(susie) <<-MESSAGE Hey, I've just registered to a susie class. #{ susie.to_text } MESSAGE end
informEveryone(susie)
click to toggle source
# File lib/susies/Susies.rb, line 88 def informEveryone(susie) if @mailInfos && @mailInfos[:targets] smtp = Net::SMTP.new 'smtp.gmail.com', 587 smtp.enable_starttls smtp.start('gmail.com', @mailInfos[:uname], @mailInfos[:passwd], :plain) do |smtp| smtp.send_message getRegisterMail(susie), @mailInfos[:email], @mailInfos[:targets] end end end
log(message)
click to toggle source
# File lib/susies/Susies.rb, line 47 def log(message) puts "[#{ formatTime Time.now }]> #{ message }" end
matchCriterias?(susie, filters)
click to toggle source
# File lib/susies/Susies.rb, line 100 def matchCriterias?(susie, filters) return true unless filters min_time = filters[:minTime].nil? || (susie.start.strftime("%H%M") >= filters[:minTime].strftime("%H%M")) max_time = filters[:maxTime].nil? || (susie.end.strftime("%H%M") >= filters[:maxTime].strftime("%H%M")) nb_students = filters[:nb_registered].nil? || (susie.nb_registered <= filters[:nb_registered]) login = filters[:logins].nil? || (filters[:logins].include?(susie.login)) type = filters[:type].nil? || (susie.type == filters[:type]) title = filters[:title].nil? || (susie.title.include?(filters[:title])) min_time && max_time && login && nb_students && type && title end
registerSusie(susie)
click to toggle source
# File lib/susies/Susies.rb, line 114 def registerSusie(susie) @requestsManager.registerSusie susie if @buddiesAutologins @buddiesAutologins.each do |autologin| buddiesRequestsManager = IntraRequestsManager.new buddiesRequestsManager.authenticate! autologin buddiesRequestsManager.registerSusie susie end end end
registeredThisWeek?(susies)
click to toggle source
# File lib/susies/Susies.rb, line 127 def registeredThisWeek?(susies) susies.each { |susie| return true if susie.is_registered } false end