jekyll-hackclub 1.4.0 → 1.5.0

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: e4721706e534b10dd13f091c8b30cd6999e19348227e189f4a8a8169b4820b73
4
+ data.tar.gz: b0e2f43bf635c97f7ed581cc71a3f5e1d4b02865baff200721dab04ecb1b6eba
5
5
  SHA512:
6
- metadata.gz: ab656eaeb6afcd5810732d0ca95bf0feb9be3165c6b50101f2f1eac981842fcd9e4ccca73575edab704e50513dad6ee53ef6af8d657d3ab6664453035550f2b6
7
- data.tar.gz: 0a7ba5e07b1c95719ee6f407302bd571488e2033b4ccdd6211f6d9ac06d73cb5c927dbd677a57011fac09e2d7620f8bd37e809b67650fc909c1c165aff726016
6
+ metadata.gz: 7537c156d3097764a069795b97b4ddd5788718ec3e6bcc07579f7e229614c1b640eb19ec95bca9cb84561953b7b0bae837a93d09c715a9a6dfdc7a29de55765c
7
+ data.tar.gz: d1f87e8f43d9e48a68ff789a3d0d165701026e45c9b8423b3221ebb02e629bf887688fd89fb310c11bcee137205268ff4ebb2a0daa9185b8ce358e5755153cba
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
@@ -10,99 +10,64 @@ module HackclubRequest
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.resolve_emoji(id)
31
+ _, res = make_request("/emoji/#{id.strip}")
32
+ res&.is_a?(Net::HTTPSuccess) ? res.body : DEFAULT_EMOJI
33
+ end
27
34
 
28
- data = JSON.parse(res.body)
29
- if res.is_a?(Net::HTTPSuccess)
30
- data
31
- else
32
- {}
33
- end
35
+ def self.raw_file(fileid)
36
+ data, res = make_request("/files.info/#{fileid}")
37
+ res&.is_a?(Net::HTTPSuccess) ? data : {}
34
38
  end
35
39
 
36
40
  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
41
+ data, res = make_request("/users.info/#{userid}")
42
+ res&.is_a?(Net::HTTPSuccess) ? data : {}
46
43
  end
47
44
 
48
45
  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
46
+ data, res = make_request("/usergroup/#{groupid}")
47
+ res&.is_a?(Net::HTTPSuccess) ? data : {}
58
48
  end
59
49
 
60
50
  def self.resolve_usergroup(groupid)
61
51
  data = raw_usergroup(groupid)
62
- return data.dig("handle") || "unknown"
52
+ data["handle"] || "unknown"
63
53
  end
64
54
 
65
55
  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
56
+ data, res = make_request("/users.info/#{userid}")
57
+ res&.is_a?(Net::HTTPSuccess) ? (data.dig("user", "name") || "unknown") : "unknown"
58
+ rescue
59
+ "unavailable"
79
60
  end
80
61
 
81
62
  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
63
+ data, res = make_request("/conversations.info/#{channelid}")
64
+ res&.is_a?(Net::HTTPSuccess) ? data : {}
91
65
  end
92
66
 
93
67
  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
68
+ data, res = make_request("/conversations.info/#{channelid}")
69
+ res&.is_a?(Net::HTTPSuccess) ? (data.dig("channel", "name") || "unknown") : "unknown"
70
+ rescue
71
+ "unavailable"
107
72
  end
108
73
  end
@@ -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.0
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: