Sha256: 59cbcda4a82589601facbf5899d110f3eb31120c8be81d331c8622b6a8128e7b
Contents?: true
Size: 1.62 KB
Versions: 1
Compression:
Stored size: 1.62 KB
Contents
require_relative 'fb_duration' require_relative 'storage' require_relative 'models/message' require_relative 'models/user' require_relative 'models/message_thread' class MessageHandler attr_reader :driver def initialize(driver) @driver = driver end def unread messages.reject(&:read?) end def messages visit_messages_page xpaths.wait_for_element(:messages, :chats) chats = xpaths.elements(:messages, :chats) messages = messages_for_chats(chats) messages_after_last_message_time(messages) end private def messages_for_chats(chats) chats.map do |chat| message_thread = MessageThread.new(title: xpaths.child_element(chat, :messages, :title_relative).text) text = xpaths.child_element(chat, :messages, :text_relative).text read = !xpaths.element_has_child?(chat, :messages, :mark_as_read_button_relative) message_time_ago = xpaths.child_element(chat, :messages, :time_sent_ago_relative).text timestamp = FbDuration.parse_to_time(message_time_ago) Message.new(message_thread: message_thread, text: text, read: read, timestamp: timestamp) end end def messages_after_last_message_time(messages) last_message_time = Storage.get(:last_message_time, default: Time.new(2004, 2, 4)) messages_to_return = messages.select { _1.timestamp > last_message_time } last_message_time = messages.map(&:timestamp).max Storage.set(:last_message_time, last_message_time) messages_to_return end def xpaths @xpaths ||= Xpaths.new(driver) end def visit_messages_page driver.navigate.to('https://www.facebook.com/messages/') end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
fuck_facebook-0.1.0 | src/message_handler.rb |