Class: QuickModule

Inherits:
Object
  • Object
show all
Defined in:
lib/wikidotrb/util/quick_module.rb

Class Method Summary collapse

Class Method Details

._request(module_name:, site_id:, query:) ⇒ Hash

Send request

Parameters:

  • module_name (String)

    Module name

  • site_id (Integer)

    Site ID

  • query (String)

    Query

Returns:

  • (Hash)

    JSON-parsed response result

Raises:

  • (ArgumentError)


18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/wikidotrb/util/quick_module.rb', line 18

def self._request(module_name:, site_id:, query:)
  # Check if module name is valid
  raise ArgumentError, "Invalid module name" unless %w[MemberLookupQModule UserLookupQModule PageLookupQModule].include?(module_name)

  # Build request URL
  url = "https://www.wikidot.com/quickmodule.php?module=#{module_name}&s=#{site_id}&q=#{query}"

  # Send HTTP request
  response = HTTPX.get(url, timeout: { operation: 300 })

  # Check status code
  raise ArgumentError, "Site is not found" if response.status == 500

  # Parse JSON response
  JSON.parse(response.body.to_s)
end

.member_lookup(site_id:, query:) ⇒ Array<QMCUser>

Search for members

Parameters:

  • site_id (Integer)

    Site ID

  • query (String)

    Query

Returns:

  • (Array<QMCUser>)

    List of users



39
40
41
42
# File 'lib/wikidotrb/util/quick_module.rb', line 39

def self.member_lookup(site_id:, query:)
  users = _request(module_name: "MemberLookupQModule", site_id: site_id, query: query)["users"]
  users.map { |user| QMCUser.new(id: user["user_id"].to_i, name: user["name"]) }
end

.page_lookup(site_id:, query:) ⇒ Array<QMCPage>

Search for pages

Parameters:

  • site_id (Integer)

    Site ID

  • query (String)

    Query

Returns:

  • (Array<QMCPage>)

    List of pages



57
58
59
60
# File 'lib/wikidotrb/util/quick_module.rb', line 57

def self.page_lookup(site_id:, query:)
  pages = _request(module_name: "PageLookupQModule", site_id: site_id, query: query)["pages"]
  pages.map { |page| QMCPage.new(title: page["title"], unix_name: page["unix_name"]) }
end

.user_lookup(site_id:, query:) ⇒ Array<QMCUser>

Search for users

Parameters:

  • site_id (Integer)

    Site ID

  • query (String)

    Query

Returns:

  • (Array<QMCUser>)

    List of users



48
49
50
51
# File 'lib/wikidotrb/util/quick_module.rb', line 48

def self.user_lookup(site_id:, query:)
  users = _request(module_name: "UserLookupQModule", site_id: site_id, query: query)["users"]
  users.map { |user| QMCUser.new(id: user["user_id"].to_i, name: user["name"]) }
end