Class: Wikidotrb::Module::PrivateMessageCollection
- Inherits:
-
Array
- Object
- Array
- Wikidotrb::Module::PrivateMessageCollection
- Extended by:
- Common::Decorators
- Defined in:
- lib/wikidotrb/module/private_message.rb
Direct Known Subclasses
Class Method Summary collapse
- ._acquire(client:, module_name:)
- .from_ids(client:, message_ids:)
- .login_required(*methods) extended from Common::Decorators
Instance Method Summary collapse
Class Method Details
._acquire(client:, module_name:)
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/wikidotrb/module/private_message.rb', line 58 def self._acquire(client:, module_name:) response = client.amc_client.request(bodies: [{ moduleName: module_name }])[0] html = Nokogiri::HTML(response["body"]) if response && response["body"] pager = html.css("div.pager span.target") max_page = pager.length > 2 ? pager[-2].text.to_i : 1 responses = if max_page > 1 bodies = (1..max_page).map { |page| { page: page, moduleName: module_name } } client.amc_client.request(bodies: bodies, return_exceptions: false) else [response] end = [] responses.each do |res| html = Nokogiri::HTML(res["body"]) if res && res["body"] += html.css("tr.message").map { |tr| tr["data-href"].split("/").last.to_i } end from_ids(client: client, message_ids: ) end |
.from_ids(client:, message_ids:)
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/wikidotrb/module/private_message.rb', line 22 def self.from_ids(client:, message_ids:) bodies = .map do || { item: , moduleName: "dashboard/messages/DMViewMessageModule" } end responses = client.amc_client.request(bodies: bodies, return_exceptions: true) = [] responses.each_with_index do |response, index| if response.is_a?(Wikidotrb::Common::Exceptions::WikidotStatusCodeException) && response.status_code == "no_message" raise Wikidotrb::Common::Exceptions::ForbiddenException.new( "Failed to get message: #{[index]}" ), response end raise response if response.is_a?(Exception) next unless response && response["body"] html = Nokogiri::HTML(response["body"]) sender, recipient = html.css("div.pmessage div.header span.printuser") << PrivateMessage.new( client: client, id: [index], sender: Wikidotrb::Util::Parser::UserParser.parse(client, sender), recipient: Wikidotrb::Util::Parser::UserParser.parse(client, recipient), subject: html.css("div.pmessage div.header span.subject").text.strip, body: html.css("div.pmessage div.body").text.strip, created_at: Wikidotrb::Util::Parser::ODateParser.parse(html.css("div.header span.odate")) ) end new() end |
.login_required(*methods) Originally defined in module Common::Decorators
Instance Method Details
#to_s
18 19 20 |
# File 'lib/wikidotrb/module/private_message.rb', line 18 def to_s "#{self.class.name}(#{size} messages)" end |