Module: HackclubRequest

Defined in:
lib/server-bridge.rb

Constant Summary collapse

DEFAULT_EMOJI =

:alibaba-question:

"https://emoji.slack-edge.com/T0266FRGM/alibaba-question/c5ba32ce553206b8.png"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.hostObject

Returns the value of attribute host.



10
11
12
# File 'lib/server-bridge.rb', line 10

def host
  @host
end

Class Method Details

.make_request(path) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/server-bridge.rb', line 13

def self.make_request(path)
    uri = URI("#{host}#{path}")
    req = Net::HTTP::Get.new(uri)
    req['Referer'] = "jekyll-hackclub"

    res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|
        http.request(req)
    end

    return JSON.parse(res.body), res
rescue JSON::ParserError
    return {}, res
rescue => e
    warn "Request to #{uri} failed: #{e}"
    return {}, nil
end

.raw_channel(channelid) ⇒ Object



62
63
64
65
# File 'lib/server-bridge.rb', line 62

def self.raw_channel(channelid)
    data, res = make_request("/conversations.info/#{channelid}")
    res&.is_a?(Net::HTTPSuccess) ? data : {}
end

.raw_file(fileid) ⇒ Object



35
36
37
38
# File 'lib/server-bridge.rb', line 35

def self.raw_file(fileid)
    data, res = make_request("/files.info/#{fileid}")
    res&.is_a?(Net::HTTPSuccess) ? data : {}
end

.raw_user(userid) ⇒ Object



40
41
42
43
# File 'lib/server-bridge.rb', line 40

def self.raw_user(userid)
    data, res = make_request("/users.info/#{userid}")
    res&.is_a?(Net::HTTPSuccess) ? data : {}
end

.raw_usergroup(groupid) ⇒ Object



45
46
47
48
# File 'lib/server-bridge.rb', line 45

def self.raw_usergroup(groupid)
    data, res = make_request("/usergroup/#{groupid}")
    res&.is_a?(Net::HTTPSuccess) ? data : {}
end

.resolve_channel(channelid) ⇒ Object



67
68
69
70
71
72
# File 'lib/server-bridge.rb', line 67

def self.resolve_channel(channelid)
    data, res = make_request("/conversations.info/#{channelid}")
    res&.is_a?(Net::HTTPSuccess) ? (data.dig("channel", "name") || "unknown") : "unknown"
rescue
    "unavailable"
end

.resolve_emoji(id) ⇒ Object



30
31
32
33
# File 'lib/server-bridge.rb', line 30

def self.resolve_emoji(id)
    _, res = make_request("/emoji/#{id.strip}")
    res&.is_a?(Net::HTTPSuccess) ? res.body : DEFAULT_EMOJI
end

.resolve_usergroup(groupid) ⇒ Object



50
51
52
53
# File 'lib/server-bridge.rb', line 50

def self.resolve_usergroup(groupid)
    data = raw_usergroup(groupid)
    data["handle"] || "unknown"
end

.resolve_username(userid) ⇒ Object



55
56
57
58
59
60
# File 'lib/server-bridge.rb', line 55

def self.resolve_username(userid)
    data, res = make_request("/users.info/#{userid}")
    res&.is_a?(Net::HTTPSuccess) ? (data.dig("user", "name") || "unknown") : "unknown"
rescue
    "unavailable"
end