class QiitaPicks::Mailer
Public Class Methods
new(email, password)
click to toggle source
# File lib/qiita_picks/mailer.rb, line 10 def initialize(email, password) @gmail = Gmail.new(email, password) end
Public Instance Methods
deliver(params={})
click to toggle source
# File lib/qiita_picks/mailer.rb, line 14 def deliver(params={}) return if params[:add_files].compact.empty? @gmail.deliver { to params[:to] subject params[:subject] body params[:body] params[:add_files].each {|f| add_file(f)} } end
weekly_popular(limit=5)
click to toggle source
# File lib/qiita_picks/mailer.rb, line 24 def weekly_popular(limit=5) @gmail.inbox.emails(:unread, from: "info@qiita.com").last(limit).inject([]) do |data, mail| url = mail.text_part.decoded.scan(/^\d+位.+\((http.+?)\)/).flatten data << Hash[:subject, mail.subject, :date, mail.date, :url, url] end end
weekly_stocked(limit=5)
click to toggle source
# File lib/qiita_picks/mailer.rb, line 31 def weekly_stocked(limit=5) @gmail.inbox.emails(:unread, from: "noreply@qiita.com").last(limit).inject([]) do |data, mail| next unless /^.+?さんが今週Qiitaでストックした記事$/ =~ mail.subject doc = Nokogiri::HTML NKF.nkf('-w', NKF.nkf('-w', mail.body.decoded)) url = doc.css('.stockedArticlesTable a').inject([]){|list, elem| list << elem.attr("href").match(/(^http.+?)\?/)[1] }.uniq data << Hash[:subject, mail.subject, :date, mail.date, :url, url] end end