Sha256: 4d6083449f6e72805f315cbd36746f83551e62fdf273c193e0801dd9c0f48271
Contents?: true
Size: 1.69 KB
Versions: 2
Compression:
Stored size: 1.69 KB
Contents
require_relative 'helpers' module ChatX class User attr_reader :owns_rooms, :in_rooms, :description, :id, :username, :server 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 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 end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
chatx-0.0.1 | lib/chatx/models/user.rb |
chatx-0.0.0.pre.pre3 | lib/chatx/models/user.rb |