class ChatX::User
Attributes
description[R]
id[R]
in_rooms[R]
owns_rooms[R]
server[R]
username[R]
Public Class Methods
new(server, **opts)
click to toggle source
# File lib/chatx/models/user.rb, line 7 def initialize(server, **opts) if opts.values_at(:user_id).any?(&:nil?) raise ArgumentError, 'Got nil for an expected user property' end @server = server @id = opts[:user_id] metadata end
Private Instance Methods
metadata()
click to toggle source
# File lib/chatx/models/user.rb, line 20 def metadata metadata_page = Nokogiri::HTML open("https://chat.#{@server}.com/users/#{@id}") @username = metadata_page.css('.usercard-xxl .user-status').first.text @description = metadata_page.css('.user-stats tr:nth-child(4) td:last-child').text in_room_cards = metadata_page.css('#user-roomcards-container').children @in_rooms = if !in_room_cards.nil? in_room_cards.reject { |e| e.is_a? Nokogiri::XML::Text }.map do |e| rid = e.attr('id').split('-').last.to_i ChatX::Helpers.cached rid, :rooms do Room.new @server, room_id: rid end end else [] end owns_room_cards = metadata_page.css('#user-owningcards').children[-1..1] @owns_rooms = if !owns_room_cards.nil? owns_room_cards.reject { |e| e.is_a? Nokogiri::XML::Text }.map do |e| puts e rid = e.attr('id').split('-').last.to_i ChatX::Helpers.cached rid, :rooms do Room.new @server, room_id: rid end end else [] end end