Sha256: 51722bba41d01de6116fcefc7972edd2f4899e10ae772c50a4f563500653ce14
Contents?: true
Size: 1.74 KB
Versions: 4
Compression:
Stored size: 1.74 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 chats = xpaths.wait_for_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) Message.new( message_thread: message_thread, text: chat_text(chat), read: chat_read?(chat), timestamp: chat_timestamp(chat) ) end end def chat_text(chat) xpaths.child_element(chat, :messages, :text_relative).text end def chat_read?(chat) !xpaths.element_has_child?(chat, :messages, :mark_as_read_button_relative) end def chat_timestamp(chat) message_time_ago = xpaths.child_element(chat, :messages, :time_sent_ago_relative).text FbDuration.parse_to_time(message_time_ago) end def messages_after_last_message_time(messages) last_message_check_time = Storage.get(:last_message_check_time, default: Time.new(2004, 2, 4)) last_check_time_with_buffer = last_message_check_time - 5.minutes messages_to_return = messages.select { _1.timestamp > last_check_time_with_buffer } Storage.set(:last_message_check_time, Time.now) 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
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
fuck_facebook-0.5.2 | src/message_handler.rb |
fuck_facebook-0.5.1 | src/message_handler.rb |
fuck_facebook-0.5.0 | src/message_handler.rb |
fuck_facebook-0.4.1 | src/message_handler.rb |