jekyll-hackclub 1.4.0 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1de71437907ec6e92d5b674b42dc745763ffb1f0b4010345df2bd38ae614960f
4
- data.tar.gz: 0c04f981eaed4fb3b09f4aef40ed183ea64a95019977f8f407fa97e0f750a432
3
+ metadata.gz: 946c0c6e84743e07d73f28be93196ab5b36f64aac96b6b38c874f2f312b64bcd
4
+ data.tar.gz: e1042a102d08ca8591bfd7ea152d1ff5b3603257372c301bd94d9d224e834417
5
5
  SHA512:
6
- metadata.gz: ab656eaeb6afcd5810732d0ca95bf0feb9be3165c6b50101f2f1eac981842fcd9e4ccca73575edab704e50513dad6ee53ef6af8d657d3ab6664453035550f2b6
7
- data.tar.gz: 0a7ba5e07b1c95719ee6f407302bd571488e2033b4ccdd6211f6d9ac06d73cb5c927dbd677a57011fac09e2d7620f8bd37e809b67650fc909c1c165aff726016
6
+ metadata.gz: c93c3636b08e11618087f9927dee95e724721b7ff2675e7868c6da030a863a0e8bff1c9803d1cc8ac0d16bb93c85228c80bf30ea3ac41f74ccf3c0cbdd6ac2c0
7
+ data.tar.gz: d44840b14ac1712cb1d1469287d3e6b9a64984c4ef22731654dfae51ea806330c7ef0fa535b5559af236cba1c6e8f162a5dfdeccc8e2da925037129074189171
data/lib/args-parser.rb CHANGED
@@ -21,7 +21,7 @@ module ArgsParser
21
21
  elsif ArraysManipulation.respond_to?(func)
22
22
  value = ArraysManipulation.public_send(func, value, args)
23
23
  else
24
- raise ArgumentError, "Unkown function '#{func}'"
24
+ raise ArgumentError, "Unknown function '#{func}'"
25
25
  end
26
26
  end
27
27
  value
@@ -3,6 +3,7 @@ require_relative "./tags/mentions"
3
3
  require_relative "./tags/user-tag"
4
4
  require_relative "./tags/channel-tag"
5
5
  require_relative "./tags/usergroup-tag"
6
+ require_relative "./tags/profile-pic"
6
7
  require_relative "./tags/file"
7
8
 
8
9
  require_relative "./tags/parser"
data/lib/server-bridge.rb CHANGED
@@ -4,105 +4,69 @@ require "uri"
4
4
 
5
5
  module HackclubRequest
6
6
  DEFAULT_EMOJI = "https://emoji.slack-edge.com/T0266FRGM/alibaba-question/c5ba32ce553206b8.png" # :alibaba-question:
7
- @host = Jekyll.configuration({})['HACKCLUB_API'] || "https://slack.mathias.hackclub.app"
7
+ @host = Jekyll.configuration({})['HACKCLUB_API'] || "https://hackclub.mathiasd.fr"
8
8
 
9
9
  class << self
10
10
  attr_accessor :host
11
11
  end
12
12
 
13
- def self.resolve_emoji(id)
14
- uri = URI("#{host}/emoji/#{id.strip}")
15
- res = Net::HTTP.get_response(uri)
13
+ def self.make_request(path)
14
+ uri = URI("#{host}#{path}")
15
+ req = Net::HTTP::Get.new(uri)
16
+ req['Referer'] = "jekyll-hackclub"
16
17
 
17
- if res.is_a?(Net::HTTPSuccess)
18
- res.body
19
- else
20
- DEFAULT_EMOJI
18
+ res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|
19
+ http.request(req)
21
20
  end
21
+
22
+ return JSON.parse(res.body), res
23
+ rescue JSON::ParserError
24
+ return {}, res
25
+ rescue => e
26
+ warn "Request to #{uri} failed: #{e}"
27
+ return {}, nil
22
28
  end
23
29
 
24
- def self.raw_file(fileid)
25
- uri = URI("#{host}/files.info/#{fileid}")
26
- res = Net::HTTP.get_response(uri)
30
+ def self.get_emoji(id)
31
+ return "#{host}/emoji/#{id.strip}"
32
+ end
27
33
 
28
- data = JSON.parse(res.body)
29
- if res.is_a?(Net::HTTPSuccess)
30
- data
31
- else
32
- {}
33
- end
34
+ def self.raw_file(fileid)
35
+ data, res = make_request("/files.info/#{fileid}")
36
+ res&.is_a?(Net::HTTPSuccess) ? data : {}
34
37
  end
35
38
 
36
39
  def self.raw_user(userid)
37
- uri = URI("#{host}/users.info/#{userid}")
38
- res = Net::HTTP.get_response(uri)
39
-
40
- data = JSON.parse(res.body)
41
- if res.is_a?(Net::HTTPSuccess)
42
- data
43
- else
44
- {}
45
- end
40
+ data, res = make_request("/users.info/#{userid}")
41
+ res&.is_a?(Net::HTTPSuccess) ? data : {}
46
42
  end
47
43
 
48
44
  def self.raw_usergroup(groupid)
49
- uri = URI("#{host}/usergroup/#{groupid}")
50
- res = Net::HTTP.get_response(uri)
51
-
52
- data = JSON.parse(res.body)
53
- if res.is_a?(Net::HTTPSuccess)
54
- data
55
- else
56
- {}
57
- end
45
+ data, res = make_request("/usergroup/#{groupid}")
46
+ res&.is_a?(Net::HTTPSuccess) ? data : {}
58
47
  end
59
48
 
60
49
  def self.resolve_usergroup(groupid)
61
50
  data = raw_usergroup(groupid)
62
- return data.dig("handle") || "unknown"
51
+ data["handle"] || "unknown"
63
52
  end
64
53
 
65
54
  def self.resolve_username(userid)
66
- uri = URI("#{host}/users.info/#{userid}")
67
- res = Net::HTTP.get_response(uri)
68
-
69
- begin
70
- data = JSON.parse(res.body)
71
- if res.is_a?(Net::HTTPSuccess)
72
- data.dig("user", "name") || "unknown"
73
- else
74
- "unknown"
75
- end
76
- rescue
77
- "unavailable"
78
- end
55
+ data, res = make_request("/users.info/#{userid}")
56
+ res&.is_a?(Net::HTTPSuccess) ? (data.dig("user", "name") || "unknown") : "unknown"
57
+ rescue
58
+ "unavailable"
79
59
  end
80
60
 
81
61
  def self.raw_channel(channelid)
82
- uri = URI("#{host}/conversations.info/#{channelid}")
83
- res = Net::HTTP.get_response(uri)
84
-
85
- data = JSON.parse(res.body)
86
- if res.is_a?(Net::HTTPSuccess)
87
- data
88
- else
89
- {}
90
- end
62
+ data, res = make_request("/conversations.info/#{channelid}")
63
+ res&.is_a?(Net::HTTPSuccess) ? data : {}
91
64
  end
92
65
 
93
66
  def self.resolve_channel(channelid)
94
- uri = URI("#{host}/conversations.info/#{channelid}")
95
- res = Net::HTTP.get_response(uri)
96
-
97
- begin
98
- data = JSON.parse(res.body)
99
- if res.is_a?(Net::HTTPSuccess)
100
- data.dig("channel", "name") || "unknown"
101
- else
102
- "unknown"
103
- end
104
- rescue
105
- "unavailable"
106
- end
67
+ data, res = make_request("/conversations.info/#{channelid}")
68
+ res&.is_a?(Net::HTTPSuccess) ? (data.dig("channel", "name") || "unknown") : "unknown"
69
+ rescue
70
+ "unavailable"
107
71
  end
108
72
  end
data/lib/tags/emoji.rb CHANGED
@@ -6,7 +6,7 @@ module Jekyll
6
6
  def initialize(tagName, content, tokens)
7
7
  super
8
8
  @id = content.gsub(/\A:+|:+\z/, '').strip
9
- @img_url = HackclubRequest.resolve_emoji(@id)
9
+ @img_url = HackclubRequest.get_emoji(@id)
10
10
  end
11
11
 
12
12
  def render(context)
@@ -0,0 +1,26 @@
1
+ require "jekyll"
2
+ require_relative "../server-bridge"
3
+
4
+ module Jekyll
5
+ class HackclubPFP < Liquid::Tag
6
+ def initialize(tagName, content, tokens)
7
+ super
8
+ if content.strip =~ /^(U\w+)(?:@(.+))?$/
9
+ id = Regexp.last_match(1)
10
+ data = HackclubRequest.raw_user(id)
11
+ @resolution = Regexp.last_match(2) || "original"
12
+
13
+ @img_url = data.dig("user", "profile", "image_"+@resolution)
14
+ @name = data.dig("user", "name")
15
+ else
16
+ raise ArgumentError, "Invalid profilepic tag format: #{content}"
17
+ end
18
+ end
19
+
20
+ def render(context)
21
+ %Q{<img src="#{@img_url}" title="#{@name}'s profile picture" alt="#{@name}'s profile picture" class="hackclub-pfp res-#{@resolution}">}
22
+ end
23
+ end
24
+
25
+ Liquid::Template.register_tag "profilepic", HackclubPFP
26
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-hackclub
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - MathiasDPX
@@ -52,6 +52,7 @@ files:
52
52
  - lib/tags/file.rb
53
53
  - lib/tags/mentions.rb
54
54
  - lib/tags/parser.rb
55
+ - lib/tags/profile-pic.rb
55
56
  - lib/tags/user-tag.rb
56
57
  - lib/tags/usergroup-tag.rb
57
58
  licenses: