Class: Wikidotrb::Module::SiteApplication
- Inherits:
-
Object
- Object
- Wikidotrb::Module::SiteApplication
- Defined in:
- lib/wikidotrb/module/site_application.rb
Instance Attribute Summary collapse
-
#site
readonly
Returns the value of attribute site.
-
#text
readonly
Returns the value of attribute text.
-
#user
readonly
Returns the value of attribute user.
Class Method Summary collapse
Instance Method Summary collapse
- #_process(action)
-
#accept
申請を承認する.
-
#decline
申請を拒否する.
-
#initialize(site:, user:, text:) ⇒ SiteApplication
constructor
A new instance of SiteApplication.
- #to_s
Constructor Details
#initialize(site:, user:, text:) ⇒ SiteApplication
Returns a new instance of SiteApplication.
15 16 17 18 19 |
# File 'lib/wikidotrb/module/site_application.rb', line 15 def initialize(site:, user:, text:) @site = site @user = user @text = text end |
Instance Attribute Details
#site (readonly)
Returns the value of attribute site.
13 14 15 |
# File 'lib/wikidotrb/module/site_application.rb', line 13 def site @site end |
#text (readonly)
Returns the value of attribute text.
13 14 15 |
# File 'lib/wikidotrb/module/site_application.rb', line 13 def text @text end |
#user (readonly)
Returns the value of attribute user.
13 14 15 |
# File 'lib/wikidotrb/module/site_application.rb', line 13 def user @user end |
Class Method Details
.acquire_all(site:)
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 57 58 59 |
# File 'lib/wikidotrb/module/site_application.rb', line 25 def self.acquire_all(site:) # サイトへの未処理の申請を取得する # @param site [Site] サイト # @return [Array<SiteApplication>] 申請のリスト response = site.amc_request( bodies: [{ moduleName: "managesite/ManageSiteMembersApplicationsModule" }] ).first body = response["body"] raise Wikidotrb::Common::Exceptions::ForbiddenException, "You are not allowed to access this page" if body.include?("WIKIDOT.page.listeners.loginClick(event)") html = Nokogiri::HTML(response["body"]) applications = [] user_elements = html.css("h3 span.printuser") text_wrapper_elements = html.css("table") if user_elements.length != text_wrapper_elements.length raise Wikidotrb::Common::Exceptions::UnexpectedException, "Length of user_elements and text_wrapper_elements are different" end user_elements.each_with_index do |user_element, i| text_wrapper_element = text_wrapper_elements[i] user = Wikidotrb::Util::Parser::UserParser.user(site.client, user_element) text = text_wrapper_element.css("td")[1].text.strip applications << SiteApplication.new(site: site, user: user, text: text) end applications end |
Instance Method Details
#_process(action)
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/wikidotrb/module/site_application.rb', line 61 def _process(action) # 申請を処理する # @param action [String] 処理の種類 ('accept' または 'decline') raise ArgumentError, "Invalid action: #{action}" unless %w[accept decline].include?(action) begin site.amc_request( bodies: [{ action: "ManageSiteMembershipAction", event: "acceptApplication", user_id: user.id, text: "your application has been #{action}ed", type: action, moduleName: "Empty" }] ) rescue Wikidotrb::Common::Exceptions::WikidotStatusCodeException => e raise e unless e.status_code == "no_application" raise Wikidotrb::Common::Exceptions::NotFoundException.new( "Application not found: #{user}" ), e end end |
#accept
申請を承認する
87 88 89 |
# File 'lib/wikidotrb/module/site_application.rb', line 87 def accept _process("accept") end |
#decline
申請を拒否する
92 93 94 |
# File 'lib/wikidotrb/module/site_application.rb', line 92 def decline _process("decline") end |
#to_s
21 22 23 |
# File 'lib/wikidotrb/module/site_application.rb', line 21 def to_s "SiteApplication(user=#{user}, site=#{site}, text=#{text})" end |